尽管驱动程序在 /usr/local/bin 中,Selenium“无法找到匹配的功能集”
Selenium “Unable to find a matching set of capabilities” despite driver being in /usr/local/bin
我试图使用 selenium webdriver 打开 firefox 浏览器。我已经在 /usr/local/bin
中安装了我的 geckodriver,因为我正在从事网络抓取和爬行项目。
- Geckodriver 版本 21.0
- Firefox 版本 64.0(量子)
- Selenium 版本 - 3.141.0.
还尝试了 geckodriver 的版本,即 17.0、19.0、23.0;找到组合。
我试过的是下面的代码。
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
driver=webdriver.Firefox()
driver.get("https://kissanime.ru/")
driver.maximize_window()
执行代码时出现错误:
Traceback (most recent call last):
File "downloader.py", line 9, in <module>
driver=webdriver.Firefox()
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
keep_alive=True)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
这个错误信息...
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
...意味着 GeckoDriver 无法 initiate/spawn 新的 WebBrowsing Session 即 Firefox 浏览器 会话。
您的主要问题可能是您使用的二进制文件版本之间不兼容,如下所示:
解决方案
- 将 Selenium 升级到当前级别 Version 3.141.59。
- 将 GeckoDriver 升级到 GeckoDriver v0.23.0 级别。
- 确保 GeckoDriver 存在于指定位置。
- 确保 GeckoDriver 具有非 root 用户的可执行权限。
- 将Firefox版本升级到Firefox v64.0.级别。
- 清理你的项目工作区通过你的IDE和重建你的项目只需要依赖。
- (WindowsOS only) 使用CCleaner工具擦除前后的所有OS杂事执行您的测试套件。
- (LinuxOS only) Free Up and Release the Unused/Cached Memory in Ubuntu/Linux Mint 测试套件[=85]执行前后=].
- 如果您的基础 Web 客户端 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web 客户端.
- 系统重启。
传递参数 executable_path 以及 GeckoDriver 的绝对路径=126=]届会如下:
Windows OS 格式:
driver = webdriver.Firefox(executable_path=r'C:\path\to\geckodriver.exe')
Linux 和 MAC OS X 格式:
driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
以非 root 用户身份执行 Test
。
- 始终在
tearDown(){}
方法中调用 driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.
我试图使用 selenium webdriver 打开 firefox 浏览器。我已经在 /usr/local/bin
中安装了我的 geckodriver,因为我正在从事网络抓取和爬行项目。
- Geckodriver 版本 21.0
- Firefox 版本 64.0(量子)
- Selenium 版本 - 3.141.0.
还尝试了 geckodriver 的版本,即 17.0、19.0、23.0;找到组合。
我试过的是下面的代码。
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
driver=webdriver.Firefox()
driver.get("https://kissanime.ru/")
driver.maximize_window()
执行代码时出现错误:
Traceback (most recent call last):
File "downloader.py", line 9, in <module>
driver=webdriver.Firefox()
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
keep_alive=True)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
这个错误信息...
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities
...意味着 GeckoDriver 无法 initiate/spawn 新的 WebBrowsing Session 即 Firefox 浏览器 会话。
您的主要问题可能是您使用的二进制文件版本之间不兼容,如下所示:
解决方案
- 将 Selenium 升级到当前级别 Version 3.141.59。
- 将 GeckoDriver 升级到 GeckoDriver v0.23.0 级别。
- 确保 GeckoDriver 存在于指定位置。
- 确保 GeckoDriver 具有非 root 用户的可执行权限。
- 将Firefox版本升级到Firefox v64.0.级别。
- 清理你的项目工作区通过你的IDE和重建你的项目只需要依赖。
- (WindowsOS only) 使用CCleaner工具擦除前后的所有OS杂事执行您的测试套件。
- (LinuxOS only) Free Up and Release the Unused/Cached Memory in Ubuntu/Linux Mint 测试套件[=85]执行前后=].
- 如果您的基础 Web 客户端 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web 客户端.
- 系统重启。
传递参数 executable_path 以及 GeckoDriver 的绝对路径=126=]届会如下:
Windows OS 格式:
driver = webdriver.Firefox(executable_path=r'C:\path\to\geckodriver.exe')
Linux 和 MAC OS X 格式:
driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
以非 root 用户身份执行
Test
。- 始终在
tearDown(){}
方法中调用driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.