python-3.x - WebDriverException:消息:浏览器似乎已经退出,然后我们可以使用 GeckoDriver Selenium 和 Python 连接错误
问题描述
大约有 100 篇关于同一问题的帖子,但似乎没有一个对我有用,因此再次询问。我正在尝试使用 Python 和 Selenium 启动 Firefox 浏览器,但出现以下错误:
WebDriverException:消息:浏览器似乎在我们连接之前已经退出。如果您在 FirefoxBinary 构造函数中指定了 log_file,请检查它以获取详细信息。
我在网上尝试了每一个答案,但似乎没有任何效果。
这是我的代码:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.FIREFOX
caps["marionette"] = False
binary = FirefoxBinary('d:\\Desktop\\IEDriver\\geckodriver.exe')
options = Options()
options.set_headless(headless=True)
driver = webdriver.Firefox(firefox_binary=binary, firefox_options=options, executable_path=r'd:\\Desktop\\IEDriver\\geckodriver.exe')
driver.get("http://google.com/")
print ("Headless Firefox Initialized")
driver.quit()
如果我设置caps["marionette"] = True
,那么我得到的错误是
SessionNotCreatedException:消息:无法找到一组匹配的功能
我正在运行的软件版本:
火狐:62.0(64位)
硒:3.14.0
壁虎:0.21.0
蟒蛇:3
操作系统:Windows 8.1 64 位
任何帮助将不胜感激。
编辑:我已经卸载并重新安装了 Firefox,但没有用。还尝试安装 Firefox 61.0.2,仍然没有运气。
解决方案
此错误消息...
WebDriverException: Message: The browser appears to have exited before we could connect.
If you specified a log_file in the FirefoxBinary constructor, check it for details.
...暗示GeckoDriver无法启动/产生新的WebBrowser即Firefox 浏览器会话。
您需要注意以下几点:
- 要设置
FirefoxBinary
您需要使用FirefoxOptions()
and 而不是传递geckodriver二进制文件的绝对路径,您必须传递所需的firefox二进制文件的绝对路径。 - 当您使用GeckoDriver v0.21.0 时,您必须强制使用marionette,因此要么保持不变(默认
true
),要么将marionette设置为true
. 您自己的包含细微更改的代码将是:
from selenium import webdriver from selenium.webdriver.firefox.options import Options from selenium.webdriver.common.desired_capabilities import DesiredCapabilities binary = r'C:\Program Files\Mozilla Firefox\firefox.exe' options = Options() options.set_headless(headless=True) options.binary = binary cap = DesiredCapabilities().FIREFOX cap["marionette"] = True #optional driver = webdriver.Firefox(firefox_options=options, capabilities=cap, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe") driver.get("http://google.com/") print ("Headless Firefox Initialized") driver.quit()
控制台输出:
Headless Firefox Initialized
在这里您可以找到有关无法找到与 selenium 3.4.3、firefox 54.0 和 gecko driver 0.17 匹配的功能集的详细讨论
推荐阅读
- python - Python Keras:虽然损失曲线看起来没有过度拟合,但过度拟合 Keras MLP?
- typescript - Typescript autocomplete
- appium - Instantiating Appium IOS/Android driver
- unity3d - Unity AR How can i trigger a button in the scene?
- wordpress - Woocommerce 中的可变产品批量折扣
- apache-spark - INSERT OVERWRITE 语句中的列列表规范
- angular5 - 如何使用angular 5打开一个excel文件
- presto - prestodb get user identity in a stored procedure
- ios - CMPedometer queryPedometerData() returning 0 steps when steps exist
- ios - 无法连接到lockdownd。在 Ubuntu 上退出