预期的浏览器二进制位置,但无法在默认位置找到二进制文件,使用 GeckoDriver 时未提供“moz:firefoxOptions.binary”功能
- 2025-03-21 09:06:00
- admin 原创
- 43
问题描述:
from selenium import webdriver;
browser= webdriver.Firefox();
browser.get('http://www.seleniumhq.org');
当我尝试运行此代码时,它会给我一个error 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.
任何想法都非常感谢!
解决方案 1:
此错误信息...
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.
...意味着GeckoDriver无法在默认位置找到Firefoxmoz:firefoxOptions.binary
二进制文件。此外,您还没有通过该功能。
解决方案
可能在你的系统内火狐安装在自定义位置,这些情况下您需要通过以下功能传递Firefox二进制文件的绝对路径:moz:firefoxOptions.binary
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.binary_location = r'C:Program FilesMozilla Firefoxirefox.exe'
driver = webdriver.Firefox(executable_path=r'C:WebDriversgeckodriver.exe', options=options)
driver.get('http://google.com/')
参考
您可以在以下位置找到几个相关的详细讨论:
SessionNotCreatedException:消息:预期浏览器二进制位置,但无法在默认位置找到二进制文件,没有“moz:firefoxOptions.binary”
InvalidArgumentException:消息:二进制文件不是使用 GeckoDriver Firefox Selenium 和 Python 的 Firefox 可执行文件错误
预期的浏览器二进制位置,但无法在默认位置找到二进制文件,未提供“moz:firefoxOptions.binary”功能
解决方案 2:
我的系统上根本没有安装 Firefox。这就是出现此错误的原因。
解决方案 3:
同样的问题:
环境
操作系统:
Mac
未安装
Firefox
应用程序已安装
geckodriver
,可以在PATH
错误原因:未安装
Firefox
解决方法:(前往Firefox 官方网站下载并)安装 Firefox
解决方案 4:
我已经卸载 Firefox 并重新安装它,这解决了我的问题。
解决方案 5:
在此之前,请确保路径变量已包含 geckodriver,单击此处下载驱动程序并运行以下 python 脚本。
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.binary_location = r'C:Program FilesMozilla Firefoxirefox.exe'
driver = webdriver.Firefox(options=options)
driver.get('http://google.com/')
解决方案 6:
作为 selenium/firefox 的附注(但使用 C#,而不是 Python),这个问题现在非常相关,因为 firefox 位置似乎存储在 windows 的新 regedit 位置中。事实上,geckodriver 正在查找此处记录的 regedit 位置:
HKEY_LOCAL_MACHINESOFTWARE WOW6432NodeMozillaMozilla Firefox[VERSION]MainPathToExe
HKEY_LOCAL_MACHINESOFTWAREMozillaMozilla Firefox[VERSION]MainPathToExe
来源:
https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
当我的机器上它出现时:
HKEY_LOCAL_MACHINESOFTWAREMozillaMozilla Firefox 109.0in
版本号存储在这里:
HKEY_LOCAL_MACHINESOFTWAREmozilla.orgMozilla
然后我使用 C# Api 设置了 selenium 驱动程序(为 poc 硬编码的路径):
var options = new FirefoxOptions();
...
options.BrowserExecutableLocation = @"C:Program FilesMozilla Firefoxirefox.exe";
Driver = new FirefoxDriver(options);
问候
解决方案 7:
您应该从https://github.com/mozilla/geckodriver/releases下载适当的 Web 驱动程序,并将其放入 py 文件所在的文件夹中。您也可以将其放在任何位置,只要文件的位置在您的系统路径中即可。
解决方案 8:
Selenium 使用Web 驱动程序(每个 Web 浏览器都有一个特定的驱动程序)来与系统上安装的浏览器(在您的情况下是 Firefox)进行通信。
要使用 Firefox,您必须:
将 Web 驱动程序放在文件系统中的特定位置(例如与 Python 脚本相同的文件夹)
在python代码中初始化时添加web驱动位置路径。
最终的代码如下:
from selenium import webdriver
browser = webdriver.Firefox('./geckodriver')
browser.get('https://www.python.org/')
注意:有时新版本的 Web 驱动程序与系统上安装的旧版本的浏览器不兼容。
解决方案 9:
我遇到了同样的问题(Windows,Firefox v99,Selenium 4.1.4,geckodriver 0.31.0),exe 文件的路径和驱动程序初始化设置正确,通过将 win32 版本的 geckodriver 更改为 win64 版本解决了该问题
解决方案 10:
检查你的系统是否安装了 Firefox
firefox -v
如果没有,请使用 snap 安装
sudo snap install firefox
解决方案 11:
您需要下载 geckodriver。
https://github.com/mozilla/geckodriver/releases
from selenium import webdriver;
browser= webdriver.Firefox('./geckodriver');
browser.get('http://www.seleniumhq.org');
扫码咨询,免费领取项目管理大礼包!