154 votes

Exécution des liaisons python de Selenium WebDriver dans chrome

J'ai rencontré un problème en travaillant avec Selenium. Pour mon projet, je dois utiliser Chrome. Cependant, je ne peux pas me connecter à ce navigateur après l'avoir lancé avec Selenium.

Pour une raison quelconque, Selenium ne peut pas trouver Chrome par lui-même. Voici ce qui se passe lorsque j'essaie de lancer Chrome sans inclure de chemin d'accès :

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome() # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 58, in start
    and read up at http://code.google.com/p/selenium/wiki/ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'ChromeDriver executable needs to be available in the path.                 Please download from http://code.google.com/p/selenium/downloads/list                and read up at http://code.google.com/p/selenium/wiki/ChromeDriver'

Pour résoudre ce problème, j'ai alors inclus le chemin de Chromium dans le code qui lance Chrome. Cependant, l'interpréteur ne parvient pas à trouver un socket auquel se connecter :

Traceback (most recent call last):
  File "./obp_pb_get_csv.py", line 73, in <module>
    browser = webdriver.Chrome('/usr/bin/chromium') # Get local session of chrome
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 46, in __init__
    self.service.start()
  File "/usr/lib64/python2.7/site-packages/selenium/webdriver/chrome/service.py", line 64, in start
    raise WebDriverException("Can not connect to the ChromeDriver")
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to the ChromeDriver'

J'ai aussi essayé de résoudre le problème en lançant chrome avec :

chromium --remote-shell-port=9222

Cependant, cela n'a pas fonctionné non plus.

PS. Voici quelques informations sur mon système :

www-client: chromium 15.0.874.121  
dev-lang:   python 2.7.2-r3 Selenium 2.11.1  
OS:         GNU/Linux Gentoo Kernel 3.1.0-gentoo-r1

137voto

adam goucher Points 796

Vous devez vous assurer que le binaire autonome ChromeDriver (qui est différent du binaire du navigateur Chrome) se trouve dans votre chemin ou est disponible dans la variable d'environnement webdriver.chrome.driver.

voir http://code.google.com/p/selenium/wiki/ChromeDriver pour des informations complètes sur la façon de câbler les choses.

Edit :

Bon, il semble qu'il y ait un bogue dans les liaisons Python pour lire le binaire du pilote de chrome à partir du chemin d'accès ou la variable d'environnement. Il semble que si chromedriver n'est pas dans votre chemin, vous devez le passer comme argument au constructeur.

import os
from selenium import webdriver

chromedriver = "/Users/adam/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get("http://stackoverflow.com")
driver.quit()

115voto

vicky Points 71

Pour Linux

  1. Vérifiez que vous avez installé la dernière version de chrome brwoser->. chromium-browser -version

  2. Si non, installez la dernière version de chrome sudo apt-get install chromium-browser

  3. obtenir la version appropriée du pilote de chrome à partir de ici

  4. Décompressez le fichier chromedriver.zip.

  5. Déplacez le fichier vers /usr/bin répertoire sudo mv chromedriver /usr/bin

  6. Goto /usr/bin répertoire cd /usr/bin

  7. Maintenant, vous devez exécuter quelque chose comme sudo chmod a+x chromedriver pour le rendre exécutable.

  8. enfin vous pouvez exécuter le code.

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get("http://www.google.com")
    print driver.page_source.encode('utf-8')
    driver.quit()

94voto

Jachin Points 472

Mac OSX uniquement

Un moyen plus facile de se lancer (en supposant que vous avez déjà homebrew installé, ce qui devrait être le cas, sinon, faites-le d'abord et laissez homebrew améliorer votre vie) est d'exécuter la commande suivante :

brew install chromedriver

Cela devrait mettre le chromedriver sur votre chemin et vous devriez être prêt.

54voto

Abdul Majeed Points 49

Pour Windows

Télécharger ChromeDriver à partir de ce lien direct OU obtenir la dernière version à partir de cette page .

Collez le chromedriver.exe dans votre C:\Python27\Scripts dossier.

Cela devrait fonctionner maintenant :

from selenium import webdriver
driver = webdriver.Chrome()

23voto

user2253967 Points 96

Pour Windows, veuillez avoir le chromedriver.exe placé sous <Install Dir>/Python27/Scripts/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X