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
版本信息:
- Python 2.7.10
- 硒 3.8.0
- 火狐 46.0
- GeckoDriver 0.19.1(它在我的 PATH 环境变量中的一个文件夹中)
- MacOS 10.12.6
如果您要使用 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 驱动程序。
简单的解决方案是:
- 卸载 Ubuntu 提供的现有 Chrome/Firefox 浏览器:转到应用程序(左上角)->Ubuntu 软件中心-> 搜索 Chrome 并卸载它.
- 安装最新的浏览器。
对于Chrome,步骤如下:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
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
,上述工作正常,没有错误
该错误可能有以下原因:
- Firefox 已安装在您的系统中
- Firefox 访问权限仅限管理员
- 没有安装同名的 Firefox
- Firefox 版本未更新
这个错误也可能来自 32 位版本,选择 x64 版本来修复它。
我这里肯定有一些不匹配的版本,因为我无法通过 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
版本信息:
- Python 2.7.10
- 硒 3.8.0
- 火狐 46.0
- GeckoDriver 0.19.1(它在我的 PATH 环境变量中的一个文件夹中)
- MacOS 10.12.6
如果您要使用 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 驱动程序。
简单的解决方案是:
- 卸载 Ubuntu 提供的现有 Chrome/Firefox 浏览器:转到应用程序(左上角)->Ubuntu 软件中心-> 搜索 Chrome 并卸载它.
- 安装最新的浏览器。
对于Chrome,步骤如下:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
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
,上述工作正常,没有错误该错误可能有以下原因:
- Firefox 已安装在您的系统中
- Firefox 访问权限仅限管理员
- 没有安装同名的 Firefox
- Firefox 版本未更新
这个错误也可能来自 32 位版本,选择 x64 版本来修复它。