web-dev-qa-db-fra.com

selenium.common.exceptions.SessionNotCreatedException: Message: impossible de trouver un ensemble de capacités correspondant avec Firefox 46 à travers Selenium

Certaines versions ne correspondent pas car je ne parviens pas à utiliser Selenium avec Python pour lancer un navigateur Web Firefox. J'utilise une ancienne version de Firefox parce que d'autres personnes ici possèdent la même ancienne version de Python et que pour elles l'ancienne version de Firefox fonctionne mieux.

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)

Erreur:

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

Informations de version:

  • Python 2.7.10 
  • Sélénium 3.8.0 
  • Firefox 46.0 
  • GeckoDriver 0.19.1 (c'est dans un dossier qui est dans ma variable d'environnement PATH)
  • MacOS 10.12.6
11
Eamonn Gormley

Si vous utilisezSelenium 3.8.0vous devez utiliserGeckoDriverobligatoirement. Mais encore une fois lorsque vous utilisezFirefox v46.0vous devez définir la capacitémarionetteàFalseàDesiredCapabilities()comme suit:

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

Si vous souhaitez utiliser Geckodriver, vous devez absolument utiliser une version plus récente de Firefox. Frex: https://github.com/mozilla/geckodriver/releases/tag/v0.19.0 listes FF55 ou plus.

Si vous prévoyez d’utiliser FF46, n’utilisez pas geckodriver. Mettez à jour vos capacités pour que la marionnette soit définie sur False:

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

Vous pouvez également voir une erreur similaire sur Chrome. Si vous le voyez sur Ubuntu, la raison en est probablement que vous avez une version pré-installée de Chrome et de Firefox qui est plus ancienne. Et vous avez téléchargé la dernière version du pilote Chrome/Firefox.

La solution simple est:

  1. Désinstallez le navigateur Chrome/Firefox existant fourni par Ubuntu: Accédez à Applications (coin supérieur gauche) -> Centre du logiciel Ubuntu -> recherchez Chrome et désinstallez-le.
  2. Installez le dernier navigateur.

Pour Chrome, les étapes sont les suivantes:

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

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

Terminé!

0
sachin thakare