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

Eam*_*ley 15 python firefox selenium selenium-webdriver geckodriver

我必须在这里找到一些不匹配的版本,因为我无法使用Python启动Selenium来启动Firefox Web浏览器.我使用的是旧版本的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)
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

版本信息:

  • Python 2.7.10
  • 硒3.8.0
  • Firefox 46.0
  • GeckoDriver 0.19.1(它位于我的PATH环境变量中的文件夹中)
  • MacOS 10.12.6

Deb*_*anB 29

当你使用时,Selenium 3.8.0你必须GeckoDriver强制使用.但同样因为使用的是Firefox v46.0你要设置的能力marionette,以False通过DesiredCapabilities()如下:

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()
Run Code Online (Sandbox Code Playgroud)

  • 我不断收到“在我们重新连接之前浏览器似乎已退出”的信息。但是,它要求我每次运行该程序时关闭浏览器。 (2认同)

Luc*_*ney 9

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

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

caps = DesiredCapabilities.FIREFOX.copy()
caps['marionette'] = False
driver=webdriver.Firefox(capabilities=caps)
Run Code Online (Sandbox Code Playgroud)

  • 将木偶设置为False似乎可以解决问题.谢谢! (2认同)

小智 6

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

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://google.com')
Run Code Online (Sandbox Code Playgroud)

通过启动 Firefox 并加载 google.com,以上工作正常,没有错误