InvalidArgumentException:消息:使用 GeckoDriver Firefox Selenium 和 Python 时,二进制文件不是 Firefox 可执行文件错误

use*_*966 8 python firefox selenium selenium-webdriver geckodriver

我遇到了与 FireFox 二进制文件相关的硒错误。

我使用反斜杠将 C:/Users/Mack/AppData/Local/Programs/Python/ 添加到 PATH 并重新启动。我在这里下载了我认为正确的文件https://github.com/mozilla/geckodriver/releases 我将该文件放在连接到 PATH 的目录中。

为了解决这个问题:我尝试使用两个反斜杠

binary = FirefoxBinary("C:\\Users\Mack\AppData\Local\Programs\Python\Python38-32\geckodriver-v0.27.0-win64\geckodriver.exe")
Run Code Online (Sandbox Code Playgroud)

这会引发相同的错误

我尝试使用一个反斜杠

binary = FirefoxBinary("C:\Users\Mack\AppData\Local\Programs\Python\Python38-32\geckodriver-v0.27.0-win64\geckodriver.exe")
Run Code Online (Sandbox Code Playgroud)

这会抛出:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
Traceback (most recent call last):
  File "C:\Users\Mack\Desktop\hacker-stories\Trends.py", line 32, in <module>
    browser = webdriver.Firefox(**firefox_binary=binary**)
  File "C:\Users\Mack\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 170, in __init__
    RemoteWebDriver.__init__(
  File "C:\Users\Mack\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Users\Mack\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Users\Mack\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Mack\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: binary is not a Firefox executable
Run Code Online (Sandbox Code Playgroud)

代码测试.py

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary("C:/Users/Mack/AppData/Local/Programs/Python/Python38-32/geckodriver-v0.27.0-win64/geckodriver.exe")
print(binary)
browser = webdriver.Firefox(firefox_binary=binary)

options = Options()
options.set_preference("browser.download.folderList",2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.dir","/Data")
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream,application/vnd.ms-excel")
driver = webdriver.Firefox(firefox_options=options)
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助理解此错误的帮助。

Deb*_*anB 5

这个错误信息...

selenium.common.exceptions.InvalidArgumentException: Message: binary is not a Firefox executable
Run Code Online (Sandbox Code Playgroud)

...意味着您作为参数传递给的二进制FirefoxBinary()文件不是有效的可执行文件。

您似乎已将 的绝对路径作为导致错误的geckodriver.exe参数传递。FirefoxBinary()


解决方案

geckodriver.exe您需要传递 的绝对路径,而不是firefox.exe。此外,firefox_options现在已弃用,您必须使用options,并且可以使用以下解决方案:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

options = Options()
options.binary = FirefoxBinary(r'C:\Program Files\Mozilla Firefox\firefox.exe')
options.set_preference("browser.download.folderList",2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.dir","/Data")
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream,application/vnd.ms-excel")
driver = webdriver.Firefox(executable_path=r'C:/Users/Mack/AppData/Local/Programs/Python/Python38-32/geckodriver-v0.27.0-win64/geckodriver.exe', options=options)
Run Code Online (Sandbox Code Playgroud)

参考

您可以在以下位置找到一些相关的详细讨论:


a c*_*der -1

您的 exe 路径看起来不正确。

“/”(斜杠)是类 UNIX 系统中经常使用的表示目录结构的东西。

窗口使用反斜杠。

更改字符串以使用两个反斜杠而不是正斜杠。


归档时间:

查看次数:

29938 次

最近记录:

1 年,7 月 前