在Firefox中使用withFrame()方法时,selenium.WebDriverException抛出失败代码0x80004005

时间:2019-02-20 22:10:11

标签: webdriver geckodriver geb selenium-firefoxdriver

我正在为一个收集用户输入的网站(使用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还是我的某些配置/版本错误所致。

有人发现此问题和解决方法吗?预先感谢您的帮助。

1 个答案:

答案 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驱动程序二进制版本之间不兼容。