尽管驱动程序在 /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 的版本,即 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')
      
    • LinuxMAC OS X 格式:

      driver = webdriver.Firefox(executable_path='/path/to/geckodriver')
      
  • 以非 root 用户身份执行 Test

  • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例.