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

问题描述 投票:0回答:1

我正在为一个网站创建一个测试套件(使用节点和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 }

其中“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”for铬)。

在Chrome中运行测试时,一切正常,但是,当使用Firefox(65.0.1 for Mac)时,我收到以下错误

条件因异常而失败:

withFrame(OppBackgroundBox){$(“body”,id:“tinymce”)<< Background} | | | pages.app.OpportunitiesAdminCreatePage - > OppBackgroundBox:geb.navigator.NonEmptyNavigator

org.openqa.selenium.WebDriverException:[Exception ...“组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsITextInputProcessor.beginInputTransactionForTests]”nsresult:“0x80004005(NS_ERROR_FAILURE)”location:“JS frame :: chrome:// marionette / content / event.js :: getTIP_ :: line 429“data:no]构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:17:03'系统信息:主持人:'Carless-MacBook-Pro.local',ip:'fe80:0:0:0:c3c:ed6e:6d05:b45d%en0',os.name:'Mac OS X',os.arch:'x86_64 ',os.version:'10 .14.3',java.version:'11 .0.1'驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver Capabilities {acceptInsecureCerts:true,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:false,moz:webdriverClick:true,pageLoadStrat egy:normal,platform:MAC,platformName:MAC,platformVersion:18.2.0,rotate:false,setWindowRect:true,strictFileInteractability:false,timeouts:{implicit:0,pageLoad:300000,script:30000},unhandledPromptBehavior:dismiss and会话ID:62b25df0-58cf-db4f-9d3c-12a1b12820ce

在CreateProgramProjectOpp.Publish机会:'#PositionData'(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或我的配置/版本错误是否存在问题。

有没有人发现这个问题和解决方法?在此先感谢您的帮助。

webdriver geckodriver geb selenium-firefoxdriver
1个回答
0
投票

这是Firefox设置的问题,与Geb没有任何关系。浏览器的基本错误是:

组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsITextInputProcessor.beginInputTransactionForTests]“nsresult:”0x80004005(NS_ERROR_FAILURE)“location:”JS frame :: chrome://marionette/content/event.js :: getTIP_ :: line 429“data :不

我建议谷歌搜索部分错误,看看这给你带来了什么。它很可能与您的Firefox状态或FF版本与您正在使用的Gecko驱动程序二进制版本之间的不兼容性有关。

© www.soinside.com 2019 - 2024. All rights reserved.