在将浏览器升级到Firefox 47之后,如何在机器人框架中使用Marionette Web驱动程序

我正在使用robotframework Selenium2Library在Firefox中运行测试.

当我将Firefox升级到47版时,我发现Firefox在Firefox启动时会在崩溃时崩溃.问题出在
github问题列表中,如下链接:

https://github.com/SeleniumHQ/selenium/issues/2110.

所以我转向使用Marionette作为问题评论建议,但结果并不好(错误显示:WebDriverException:消息:连接被拒绝,并且直接使用selenium将无济于事).同样来自selenium2Library指南页面,它告诉desired_capabilities不适用于本地webdriver.

所以我的问题是:

>如何在Selenium中设置本地Marionette webdriver实例并传递给机器人进行进一步的测试操作?
>如果有一种方法可以继续使用没有webdriver支持的Firefox 47?

我按照这里的说明:
https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

在python文件中:

def returnFirefoxCapabilities(marionetteBinaryPath):
    firefox_capabilities = DesiredCapabilities.FIREFOX
    firefox_capabilities['marionette'] = True
    firefox_capabilities['binary'] = marionetteBinaryPath
    return firefox_capabilities

并在机器人文件中:

*** Settings ***
Library           Selenium2Library  #build-in library
*** Test Case ***
try marionette
   ${firefox_capabilities}=     returnFirefoxCapabilities    path/wires
   open browser  url=www.google.com    desired_capabilities=${firefox_capabilities}

最佳答案 Selenium2Library不支持为本地Web驱动程序传递所需的功能.但是您可以更改Firefox的默认功能,它将适用于给定浏览器类型的所有未来webdriver实例,直到解释器(Python)退出.我能够使用Firefox 47,Selenium 2.53.5和Geckodriver 0.8.0进行简单的测试.

${ff default caps}    Evaluate    sys.modules['selenium.webdriver'].common.desired_capabilities.DesiredCapabilities.FIREFOX    sys,selenium.webdriver
Set To Dictionary    ${ff default caps}    marionette=${True}
Open Browser    https://www.stackoverflow.com    ff

您询问了如何传入webdriver实例.这在我看来是一个X-Y问题,所以我没有回答这个问题.如果需要,请另外提问.

点赞