以下是我的环境:
Firefox安装在C:\Program Files (x86)\Mozilla Firefox
。
geckodriver.exe位于C:\Python27\Scripts
位置。
以下是我的python代码:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.python.org")
出现以下错误:
Traceback (most recent call last):
File "examples1.py", line 5, in <module>
driver = webdriver.Firefox()
File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__
keep_alive=True)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line
我的问题是虽然firefox安装在默认位置,但webdriver无法找到它并引发错误。
注意:当我明确指定Firefox二进制位置时,它正在工作。
binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary)
答案 0 :(得分:0)
出现此错误的原因是Python无法直接找到FirefoxBinary函数。
我遇到了类似的问题。通过参考函数解决了它:
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
后来发现该解决方案已经可以here(间接)。
答案 1 :(得分:0)
重新启动我的计算机解决了这个问题。(如果您将geckodriver.exe
保留在其中一个PATH
位置,则可能需要这样做。
不确定这是否是需要解决的真正问题,而是其中一个变量。
geckodriver.exe和Firefox版本支持的小背景:
来自geckodriver
github页面:
Firefox 47 is explicitly not supported
因此,如果您要使用Firefox 47.0.1
版本,请使用Firefox driver
,而不是geckodriver
。
geckodriver
,因为selenium 2.53
使用Firefox driver
default
)。 geckodriver
设置geckodriver
路径(因为default
是Firefox
中Selenium 3.0
的{{1}}驱动程序)并将System.setProperty
设置为marionette
,因此将禁用false
功能并使用默认的Firefox驱动程序。示例代码:
geckodriver
参考文献: