我一直在尝试将 python 脚本移植到我的 wsl/bash 编码中心中。
我继续收到此错误:
Traceback (most recent call last):
File "/path/to/my/file.py", line 20, in <module>
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/firefox/webdriver.py", line 177, in __init__
super().__init__(
File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 270, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 363, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py", line 428, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py", line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: 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
我在 StackOverflow 以及其他地方进行了搜索,发现的答案对我没有帮助问题。我已确保我的计算机上安装了 Firefox,并且可执行文件位于我的 PATH 中,但它仍然会发出此错误。
这是我认为导致问题的代码。
options = Options()
options.binary_location = r'C:\Program Files\Mozilla Firefox\firefox.exe'
options.set_preference('dom.webnotifications.enabled', False)
options.headless = True
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
任何帮助将不胜感激。
该错误信息表明 Selenium 找不到 Firefox 二进制文件。虽然你在代码中指定了
options.binary_location
,但问题在于你在创建
webdriver.Firefox
实例时并没有将
options
传递进去。
以下是修复方法:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager
options = Options()
# 在 WSL 中,你需要提供 Firefox 在 WSL 中的安装路径,而不是 Windows 中的路径。
# 例如,如果 Firefox 安装在 Ubuntu WSL 中,路径可能类似于:
options.binary_location = r'/usr/bin/firefox'
options.set_preference('dom.webnotifications.enabled', False)
options.headless = True
# 将 options 传递给 webdriver.Firefox
driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()), options=options)
# 你的代码...
driver.quit()
要点:
-
WSL 路径:
确保
options.binary_location
指向 Firefox 在 WSL 环境 中的安装路径,而不是 Windows 中的路径。 -
传递
options
: 在创建webdriver.Firefox
实例时,将options
对象作为参数传递进去。
修改后,Selenium 应该能够找到 Firefox 二进制文件并启动浏览器。
标签:python,python-3.x,selenium-webdriver From: 73709258