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

时间:2017-12-12 22:33:47

标签: python selenium firefox 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)

错误:

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
  • Selenium 3.8.0
  • Firefox 46.0
  • GeckoDriver 0.19.1(它位于我的PATH环境变量中的文件夹中)
  • MacOS 10.12.6

7 个答案:

答案 0 :(得分:25)

当您使用 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()

答案 1 :(得分:9)

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

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

enum Commands:String {
    case compliaceType = ""
}

protocol CommandDef {
    associatedtype Commands
}

class MyClassA : CommandDef {

    enum Commands : String {
        case commandA1 = "hi"
        case commandA2 = "Explicit A2"
    }


}

class MyClassB : CommandDef {
    enum Commands : String {
        case commandB2 = "Explicit B2"
    }

}

print(MyClassA.Commands.commandA1)

答案 2 :(得分:1)

此错误也可能来自32位版本,请选择x64版本进行修复。

答案 3 :(得分:0)

您也可以在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

完成!

答案 4 :(得分:0)

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

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

通过启动Firefox并加载google.com,以上内容运行正常,没有错误。

答案 5 :(得分:0)

该错误有一些可能的原因,例如:

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

答案 6 :(得分:-1)

我收到此错误,因为我的计算机上未安装Firefox浏览器。您可以下载Firefox或下载Chrome驱动程序here。如果您使用的是Chrome驱动器,请确保将其添加到路径中(就像geckodriver一样)。

您可以像这样使用它:

from selenium import webdriver

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