12

我对 Firefox 版本 47 有这个问题https://github.com/seleniumhq/selenium/issues/2110

所以,我尝试添加 Marionette 网络驱动程序来修复它:https ://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

但:

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/Users/myproject/geckodriver-0.8.0-OSX'

返回错误:

selenium.common.exceptions.WebDriverException:消息:“wires”可执行文件需要在 PATH 中。

异常 AttributeError:“'Service' 对象在 > 中没有属性 'process'”被忽略

硒==2.53.5

4

3 回答 3

9

您设置的 firefox 二进制功能指向firefox二进制文件,而不是 marionette 驱动程序二进制文件。您需要添加/Users/myproject/geckodriver-0.8.0-OSX到您的路径如下:

打开终端并运行此命令

export PATH=$PATH:/Users/myproject/geckodriver-0.8.0-OSX
于 2016-06-14T11:13:56.443 回答
5

遇到了这个问题,可以确认它firefox_capabilities['binary']应该指向 Firefox 二进制文件,而不是 GeckoDriver。Mozilla WebDriver 文档中的 Python 示例已对此主题进行了说明。

于 2016-06-15T18:20:40.723 回答
0

除了其他两个答案之外,您可能不想更改PATH系统范围,因为仅在运行测试时才需要它。PATH仅在需要时才拥有权利的一种方法是在代码中设置它:

os.environ["PATH"] += os.pathsep + 'path/to/dir/containing/geckodriver/'

一个更简单的解决方法是简单地将geckodriver二进制文件移动到路径中已有的目录中:

mv geckodriver /usr/local/bin
于 2017-03-22T07:49:55.777 回答