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

时间:2016-06-12 06:15:48

标签: python selenium firefox webdriver robotframework

我正在使用robotframework Selenium2Library在Firefox中运行测试。 当我将Firefox升级到47版时,我发现Firefox在Firefox启动时会在崩溃时崩溃。问题出在github问题列表中,如下链接: https://github.com/SeleniumHQ/selenium/issues/2110

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

所以我的问题是:

  1. 如何在Selenium中设置本地Marionette webdriver实例并传递给机器人进行进一步的测试操作?
  2. 如果有一种方法可以继续使用Firefox 47而不支持webdriver吗?
  3. 我按照说明操作: 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}
    

1 个答案:

答案 0 :(得分:2)

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问题,所以我没有回答这个问题。如果需要,请另外提问。