我正在为一个收集用户输入的网站(使用node和Angular实现)创建一个测试套件。一些输入采用具有编辑功能的文本框的形式(类似于堆栈溢出中使用的这一功能)。创建可编辑框的代码是
<div id="mceu_30" class="mce-edit-area mce-container mce-panel mce-stack-layout-item" hidefocus="1" tabindex="-1" role="group" style="border-width: 1px 0px 0px;">
<iframe id="ui-tinymce-9_ifr" frameborder="0" allowtransparency="true" title="Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help" style="width: 100%; height: 100px; display: block;"></iframe>
<html> <head><style>...</style></head> <body id="tinymce" class="mce-content-body " data-id="ui-tinymce-1" contenteditable="true" spellcheck="false"><p><br data-mce-bogus="1"></p></body> </html>
</div>
为简单起见,我删除了所有部分。
我正在使用Geb / Spock框架进行测试。检查上述元素的特定代码段是
withFrame(OppBackgroundBox){$("body", id:"tinymce") << Background }
其中“背景”是测试脚本中先前定义的字符串,而OppBackgroundBox是定义为的页面元素
OppBackgroundBox{$(By.xpath('//iframe[@title="Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"]'),0)}
我通过标题识别元素,因为框架的ID随着浏览器的变化而变化(// [@ id =“ ui-tinymce-9_ifr”] 对于Mozilla,但是// [@ id =“ ui-tinymce-1_ifr” (对于Chrome)。
在Chrome中运行测试时,所有功能都可以正常工作,但是,当使用Firefox(对于Mac为65.0.1)时,出现以下错误
条件失败,出现异常:
withFrame(OppBackgroundBox){$(“ body”,id:“ tinymce”)<<背景} | | | pages.app.OpportunitiesAdminCreatePage-> OppBackgroundBox:geb.navigator.NonEmptyNavigator
org.openqa.selenium.WebDriverException:[Exception ...“组件 返回的失败代码:0x80004005(NS_ERROR_FAILURE) [nsITextInputProcessor.beginInputTransactionForTests]“ nsresult: “ 0x80004005(NS_ERROR_FAILURE)”位置:“ JS框架:: chrome://marionette/content/event.js :: getTIP_ ::第429行”数据: 否]构建信息:版本:“ 3.141.59”,修订版:“ e82be7d358”,时间: '2018-11-14T08:17:03'系统信息:主机:'Carless-MacBook-Pro.local', ip:'fe80:0:0:0:c3c:ed6e:6d05:b45d%en0',操作系统名称:'Mac OS X',os.arch: 'x86_64',os.version:'10 .14.3',java.version:'11 .0.1'驱动程序信息: org.openqa.selenium.firefox.FirefoxDriver功能 {acceptInsecureCerts:真,browserName:Firefox,browserVersion: 65.0.1,javascriptEnabled:true,moz:accessibilityChecks:false,moz:geckodriverVersion:0.24.0,moz:headless:false,moz:processID: 30057,moz:profile:/ var / folders / 10 / vbth59yn0v1 ..., moz:shutdownTimeout:60000,moz:useNonSpecCompliantPointerOrigin: 否,moz:webdriverClick:正确,pageLoadStrategy:正常,平台: MAC,platformName:MAC,platformVersion:18.2.0,rotatable:false, setWindowRect:true,strictFileInteractability:false,超时: {隐式:0,pageLoad:300000,脚本:30000}, unhandledPromptBehavior:关闭并通知}会话ID: 62b25df0-58cf-db4f-9d3c-12a1b12820ce
在CreateProgramProjectOpp.Publish机会: '#TitleData'(CreateProgramProjectOpp.groovy:195)
(其中195指的是 withFrame(OppBackgroundBox){$(“ body”,id:“ tinymce”)<< Background} 代码行)
上面的错误消息有点乱码,但是与 OppBackgroundBox 相关的是消息
pages.app.OpportunitiesAdminCreatePage-> OppBackgroundBox:geb.navigator.NonEmptyNavigator
所以问题不在于WebDriver无法找到元素。
不同组件的版本显示在错误消息中。 Gecko驱动程序版本为0.24.0
目前,我不知道这是WebDriver,Geb还是我的某些配置/版本错误所致。
有人发现此问题和解决方法吗?预先感谢您的帮助。
答案 0 :(得分:0)
这是您的Firefox设置问题,与Geb没有任何关系。浏览器的潜在错误是:
组件返回的失败代码:0x80004005(NS_ERROR_FAILURE)[nsITextInputProcessor.beginInputTransactionForTests]“ nsresult:” 0x80004005(NS_ERROR_FAILURE)“”位置:“ JS框架:: chrome://marionette/content/event.js :: getTIP_ ::行429“数据:否
我建议仔细检查部分错误,然后看看会给您带来什么。很有可能与您的Firefox状态有关,或者与FF版本和您使用的Gecko驱动程序二进制版本之间不兼容。