WebDriverException:消息:在我们将错误与GeckoDriver Selenium和Python连接之前,浏览器似乎已经退出

问题描述 投票:1回答:1

关于同一个问题大约有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:消息:无法找到匹配的功能集

我正在运行的软件版本:

Firefox:62.0(64位)

硒:3.14.0

壁虎:0.21.0

Python:3

操作系统:Windows 8.1 64位

任何帮助将受到高度赞赏。

编辑:我已经卸载并重新安装了Firefox,但没有工作。还尝试安装Firefox 61.0.2,仍然没有运气。

python-3.x selenium firefox selenium-webdriver geckodriver
1个回答
1
投票

此错误消息...

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()而不是传递geckodriver二进制的绝对路径,你必须传递所需的firefox二进制文件的绝对路径。
  • 当你使用GeckoDriver v0.21.0时,你必须强制使用木偶,所以要么保持不变(默认为true)或将木偶连接到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
  • 在这里你可以找到关于Unable to find a matching set of capabilities with selenium 3.4.3, firefox 54.0 and gecko driver 0.17的详细讨论
© www.soinside.com 2019 - 2024. All rights reserved.