wake-up-neo.com

selenium.common.exceptions.SessionNotCreatedException: Nachricht: Mit Firefox 46 und Selenium kann kein übereinstimmender Funktionssatz gefunden werden

Ich muss hier einige Versionen haben, die nicht zusammenpassen, da ich Selenium mit Python nicht dazu bringen kann, einen Firefox-Browser zu starten. Ich verwende eine ältere Version von Firefox, da andere Leute hier dieselbe Python-Version haben und für sie die alte Firefox-Version am besten funktioniert.

Code:

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)

Error:

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

Versions Information:

  • Python 2.7.10 
  • Selen 3.8.0 
  • Firefox 46.0 
  • GeckoDriver 0.19.1 (befindet sich in einem Ordner, der sich in meiner Umgebungsvariable PATH befindet)
  • MacOS 10.12.6
11
Eamonn Gormley

Da SieSelenium 3.8.0verwenden, müssen SieGeckoDriverzwingend verwenden. Wenn Sie jedochFirefox v46.0verwenden, müssen Sie die FunktionmarionetteaufFalsedurchDesiredCapabilities()folgendermaßen setzen:

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()
21
DebanjanB

Wenn Sie Geckodriver verwenden, müssen Sie auf jeden Fall eine neuere Version von Firefox verwenden. Frex: https://github.com/mozilla/geckodriver/releases/tag/v0.19.0 listet FF55 oder höher auf.

Wenn Sie FF46 verwenden möchten, verwenden Sie keinen Gecko-Treiber. Aktualisieren Sie Ihre Fähigkeiten, um die Marionette auf "False" zu setzen:

caps = DesiredCapabilities.FIREFOX.copy()
caps['marionette'] = False
driver=webdriver.Firefox(capabilities=caps)
7
Lucas Tierney

Sie können einen ähnlichen Fehler auch in Chrome sehen. Wenn Sie es auf Ubuntu sehen, ist es wahrscheinlich, dass Sie über eine vorinstallierte Version von Chrome und Firefox verfügen, die älter ist. Sie haben die neueste Version des Chrome/Firefox-Treibers heruntergeladen.

Einfache Lösung ist:

  1. Deinstallieren Sie den vorhandenen Chrome/Firefox-Browser von Ubuntu: Gehen Sie zu Anwendungen (obere linke Ecke) -> Ubuntu Software Center-> Chrome suchen und deinstallieren Sie es.
  2. Installieren Sie den neuesten Browser.

Für Chrome lauten die folgenden Schritte:

  1. wget https://dl.google.com/linux/direct/google-chrome-stable_current_AMD64.deb

  2. Sudo dpkg -i google-chrome-stable_current_AMD64.deb 

Erledigt!

0
sachin thakare