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:
Si vous utilisezSelenium 3.8.0
vous devez utiliserGeckoDriver
obligatoirement. Mais encore une fois lorsque vous utilisezFirefox v46.0
vous 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()
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)
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:
Pour Chrome, les étapes sont les suivantes:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_AMD64.deb
Sudo dpkg -i google-chrome-stable_current_AMD64.deb
Terminé!