将浏览器升级到 Firefox 47 后如何在 robotframework 中使用 Marionette 网络驱动程序

How to use Marionette web driver in robotframework after upgrade browser to Firefox 47

我使用 robotframework Selenium2Library 运行 在 Firefox 中进行测试。 当我将 Firefox 升级到 47 版本时,我发现 Firefox 在启动时会在一开始就崩溃。该问题在 github 问题列表中,如下 link: https://github.com/SeleniumHQ/selenium/issues/2110.

所以我按照问题评论的建议转而使用Marionette,但结果并不好(错误显示:WebDriverException: Message: connection refused,直接使用selenium也无济于事)。同样来自 selenium2Library 指南页面,它告诉 desired_capabilities 不适用于本地网络驱动程序。

所以我的问题是:

  1. 如何在 Selenium 中设置本地 Marionette webdriver 实例并传递给机器人以进行进一步的测试操作?
  2. 是否有办法在没有 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 不支持为本地网络驱动程序传递所需的功能。但是您可以更改 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.whosebug.com    ff

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