selenium.common.exceptions.SessionNotCreatedException:消息:无法通过 Selenium 找到与 Firefox 46 匹配的功能集

selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities with Firefox 46 through Selenium

我这里肯定有一些不匹配的版本,因为我无法通过 Python 使用 Selenium 来启动 Firefox 网络浏览器。我使用的是旧版本的 Firefox,因为这里的其他人使用的是相同的旧版本 Python,对他们来说,旧版本的 Firefox 效果最好。

代码:

from selenium import webdriver
from selenium import common
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver=webdriver.Firefox(capabilities=DesiredCapabilities.FIREFOX)

错误:

Traceback (most recent call last):
  File "scrapeCommunitySelenium.py", line 13, in <module>
    driver=webdriver.Firefox(capabilities=DesiredCapabilities.FIREFOX)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 158, in __init__
    keep_alive=True)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

版本信息:

如果您要使用 Geckodriver,您肯定需要使用较新版本的 Firefox。 Frex:https://github.com/mozilla/geckodriver/releases/tag/v0.19.0 列出 FF55 或更高版本。

如果您打算使用 FF46,请不要使用 geckodriver。更新您的功能以将 marionette 设置为 False:

caps = DesiredCapabilities.FIREFOX.copy()
caps['marionette'] = False
driver=webdriver.Firefox(capabilities=caps)

当您使用 Selenium 3.8.0 时,您必须强制使用 GeckoDriver。但是,当您再次使用 Firefox v46.0 时,您必须将功能 marionette 设置为 False 12=]如下:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
browser = webdriver.Firefox(capabilities=cap, executable_path="C:\path\to\geckodriver.exe")
browser.get('http://google.com/')
browser.quit()

我收到这个错误是因为我的机器上没有安装 Firefox 浏览器。您可以下载Firefox or download the Chrome driver here。如果您使用 Chrome 驱动器,请确保将其添加到路径中(就像 geckodriver 一样)。

你可以这样使用它:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")

您也可以在 Chrome 上看到类似的错误。如果您在 Ubuntu 上看到它,原因可能是您预装了 Chrome 版本和较旧的 Firefox。并且您已经下载了最新版本的 Chrome/Firefox 驱动程序。

简单的解决方案是:

  1. 卸载 Ubuntu 提供的现有 Chrome/Firefox 浏览器:转到应用程序(左上角)->Ubuntu 软件中心-> 搜索 Chrome 并卸载它.
  2. 安装最新的浏览器。

对于Chrome,步骤如下:

  1. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

  2. sudo dpkg -i google-chrome-stable_current_amd64.deb

完成!

我在 MacOS 10.5 Catalina 上遇到了这个问题。 我做了什么: 1. 使用 brew install geckodriver 安装 geckodriver 2. Deleted/uninstalled 我现有的(旧)Firefox 浏览器 (v.46) 并安装了 v70。 3. 试过:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://google.com')

通过启动 Firefox 并加载 google.com

,上述工作正常,没有错误

该错误可能有以下原因:

  1. Firefox 已安装在您的系统中
  2. Firefox 访问权限仅限管理员
  3. 没有安装同名的 Firefox
  4. Firefox 版本未更新

这个错误也可能来自 32 位版本,选择 x64 版本来修复它。