Message d'erreur: "L'exécutable 'chromedriver' doit être disponible dans le chemin"

172

J'utilise du sélénium avec python et j'ai téléchargé le chromedriver pour mon ordinateur Windows à partir de ce site: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Après avoir téléchargé le fichier zip, j'ai décompressé le fichier zip dans mon dossier de téléchargement. Ensuite, j'ai mis le chemin vers l'exécutable binaire (C: \ Users \ michael \ Downloads \ chromedriver_win32) dans la variable d'environnement "Path".

Cependant, lorsque j'exécute le code suivant:

  from selenium import webdriver

  driver = webdriver.Chrome()

... je reçois le message d'erreur suivant:

WebDriverException: Message: 'chromedriver' executable needs to be available in the path. Please look at     http://docs.seleniumhq.org/download/#thirdPartyDrivers and read up at http://code.google.com/p/selenium/wiki/ChromeDriver

Mais - comme expliqué ci-dessus - l'exécutable est (!) Dans le chemin ... que se passe-t-il ici?

progrès constant
la source
20
Essayez de copier le chromedriver.exedans le même répertoire que votre script Python.
Malik Brahimi
4
Installation via chocolaté ajoutera au chemin, choco install chromedriver.
WhatIsHeDoing
pour l'utilisateur rencontré ce problème dans pycharm, le redémarrage le résoudra
Charles Chow
Je suis d'accord avec la réponse d'ImNt. Bien que j'aimerais ajouter cela pour ceux qui utilisent virtualenv, vous devez exécuter python dans votre fichier venv en tant qu'administrateur, en utilisant l'exemple de format suivant: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda
@MalikBrahimi J'ai cherché cette solution partout et aucune d'elles n'a fonctionné jusqu'à ce que je trouve votre commentaire. Merci beaucoup
user2720864

Réponses:

180

Vous pouvez tester s'il se trouve réellement dans le PATH, si vous ouvrez un cmd et tapez chromedriver(en supposant que votre exécutable chromedriver est toujours nommé comme ceci) et appuyez sur Entrée. Si Starting ChromeDriver 2.15.322448apparaît, le PATH est défini de manière appropriée et il y a autre chose qui ne va pas.

Vous pouvez également utiliser un chemin direct vers le chromedriver comme ceci:

 driver = webdriver.Chrome('/path/to/chromedriver') 

Donc dans votre cas particulier:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
lmNt
la source
3
Merci pour la réponse: "Démarrage de ChromeDriver 2.15.322448" est apparu. "Seules les connexions locales sont autorisées." est également apparu. ... Mais je suppose que ça va? .... Une chose que je me demandais est la suivante: sur le site Web, il n'y avait qu'une version 32 bits de chromedriver disponible ... mais cela devrait fonctionner correctement avec mes fenêtres 64 bits, n'est-ce pas?
stabil_progress
@steady_progress Ouais, ça va. Et cela fonctionnera avec Windows 64 bits; Je l'utilise moi-même. Je soupçonne peut-être que la version sélénium peut causer le problème? Lequel avez-vous installé? L'avez-vous installé en utilisant pip?
lmNt
Avez-vous essayé d'utiliser le chemin direct vers le pilote lors de l'appel du pilote Web comme je l'ai mentionné dans la réponse? At-il échoué avec la même erreur?
lmNt
4
Lorsque vous ajoutez des webdrivers à votre PATH, quel que soit le système d'exploitation, incluez uniquement le répertoire dans lequel votre webdriver est stocké, pas l'exécutable. Exemple: PATH = $ PATH: / chemin / vers / webdriver / dossier, pas PATH = $ PATH: / chemin / vers / webdriver / chromedriver. De plus, l'utilisation de PATH est beaucoup plus portable que de passer l'emplacement dans votre webdriver.Chrome () appel, car nous pouvons toujours supposer que le PATH est défini correctement partout où votre code est exécuté, mais nous ne pouvons pas supposer que leur structure de fichier est configurée de la même manière .
Aphid
2
a essayé d'utiliser la même solution mais en obtenant cette erreur: WebDriverException: Message: l'exécutable «chromedriver.exe» peut avoir des autorisations incorrectes. Veuillez consulter sites.google.com/a/chromium.org/chromedriver/home
Yogesh
153

Je vois que les discussions parlent encore de l'ancienne façon de configurer chromedriver en téléchargeant le binaire et en configurant le chemin manuellement.

Cela peut être fait automatiquement en utilisant webdriver-manager

pip install webdriver-manager

Maintenant, le code ci-dessus dans la question fonctionnera simplement avec le changement ci-dessous,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

La même chose peut être utilisée pour définir Firefox, Edge et ie binaires.

Navarasu
la source
@Navarasu avec tout le respect que je vous dois pourquoi quelqu'un suivrait quelque chose de 3.6 alors que le courant est 3.7. La prochaine fois, ce serait bien de dire explicitement que c'est pour 3,6 .... Merci
Azy Sır
5
c'est génial car il reste à jour aussi
Leslie Alldridge
1
La bonne chose à propos de cette solution est qu'elle offre plus de flexibilité que d'autres solutions basées sur une configuration de chemin spécifique, ce que je trouve peu pratique en termes d'utilisation du script sur plusieurs machines.
IBRAHIM
14

Même situation avec l'édition communautaire pycharm, donc, comme pour cmd, vous devez redémarrer votre ide afin de recharger les variables de chemin. Redémarrez votre ide et ça devrait aller.

Andrea Bisello
la source
2
Merci. J'ai eu le même problème dans Visual Studios. Je viens de redémarrer l'IDE et cela a fonctionné :) Merci
DollarAkshay
A travaillé pour moi aussi.
CARTOS
13

Sous Linux (Ubuntu ou Debian):

sudo apt install chromium-chromedriver

Sur macOS, installez https://brew.sh/ puis faites

brew cask install chromedriver
Boris
la source
Ensuite, utilisez: driver = webdriver.Chrome ('/ usr / lib / chromium-browser / chromedriver') .. sans changer $ PATH
alchemy le
@alchemy êtes-vous sûr de devoir faire ça? Si je me souviens bien, cela driver = webdriver.Chrome()a bien fonctionné pour moi.
Boris le
Salut Boris, oui, je ne sais pas pourquoi .. même après avoir ajouté à PATH, cela ne fonctionnait pas sans cela. Je suis sûr que configurer correctement le chemin serait mieux, mais je dois juste faire une chose avec Chromedriver rapidement
alchimie le
9

Nous devons ajouter une chaîne de chemin, en commençant par la lettre ravant la chaîne, pour la chaîne brute. J'ai testé de cette façon et cela fonctionne.

driver = webdriver.Chrome(r"C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
James0007
la source
3

Quelques entrées / clarifications supplémentaires pour les futurs lecteurs de ce fil, pour éviter de bricoler avec l'environnement PATH. variable au niveau Windows et redémarrage du système Windows: (copie de ma réponse de https://stackoverflow.com/a/49851498/9083077 comme applicable à Chrome):

(1) Téléchargez chromedriver (comme décrit dans ce fil de discussion précédemment) et placez le chromedriver.exe (décompressé) dans X: \ Folder \ of \ your \ choice

(2) Exemple de code Python:

import os;
os.environ["PATH"] += os.pathsep + r'X:\Folder\of\your\choice';

from selenium import webdriver;
browser = webdriver.Chrome();
browser.get('http://localhost:8000')
assert 'Django' in browser.title

Remarques: (1) Cela peut prendre environ 5 secondes pour l'exemple de code (dans la réponse référencée) pour ouvrir le navigateur Firefox pour l'URL spécifiée. (2) La console python afficherait l'erreur suivante s'il n'y a pas de serveur déjà en cours d'exécution à l'url spécifiée ou de service d'une page avec le titre contenant la chaîne 'Django': assert 'Django' dans browser.title AssertionError

Snidhi Sofpro
la source
3

Pour Linux et OSX

Étape 1: Téléchargez chromedriver

# You can find more recent/older versions at http://chromedriver.storage.googleapis.com/
# Also make sure to pick the right driver, based on your Operating System
wget http://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_mac64.zip

Étape 2: Ajouter chromedriver à /usr/local/bin

unzip chromedriver_mac64.zip
cp chromedriver /usr/local/bin

Vous devriez maintenant pouvoir courir

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://localhost:8000')

sans aucun problème

Giorgos Myrianthous
la source
A été clairement indiqué qu'il utilise Windows, c'est pour Linux.
misantroop
1
@misantroop J'ai mis à jour ma réponse pour que cela soit clair.
Giorgos Myrianthous
2

Lorsque vous décompressez chromedriver, veuillez spécifier un emplacement exact afin de pouvoir le retracer plus tard. Ci-dessous, vous obtenez le bon chromedriver pour votre système d'exploitation, puis le décompressez à un emplacement exact, qui pourrait être fourni comme argument plus tard dans votre code.

wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /home/virtualenv/python2.7.9/

Harshdeep Singh
la source
3
Ou pour /usr/local/bin/installer globalement.
Jeppe
2

Si vous travaillez avec le cadre de robot RIDE. Ensuite, vous pouvez télécharger à Chromedriver.exepartir de son site officiel et conserver ce fichier .exe dans le C:\Python27\Scriptsrépertoire. Mentionnez maintenant ce chemin comme variable d'environnement, par exemple. C:\Python27\Scripts\chromedriver.exe.

Redémarrez votre ordinateur et exécutez à nouveau le même scénario de test. Vous n'obtiendrez plus ce problème.

Rahul Tiwari
la source
2

Selon les instructions , vous devez inclure le chemin vers ChromeDriver lors de l'instanciation du pilote Web.

driver = webdriver.Chrome('/path/to/chromedriver')
AnnaSummerShine
la source
Si vous faites défiler ces instructions vers la droite, il y a un commentaire disant "L'argument facultatif, s'il n'est pas spécifié, recherchera le chemin." Mais au moins certaines versions de webdriver semblent vérifier tout pilote chromé qu'elles trouvent dans le chemin et s'il n'est pas `` satisfait '' (mauvaise version, etc.), il ne l'utilisera pas (à moins d'être forcé d'essayer quand même en définissant ce paramètre). Il continuera à chercher une meilleure version, puis se plaindra s'il n'en trouve pas. ("Aucun pilote chromé approprié trouvé" aurait été un meilleur message que "aucun pilote chromé trouvé".)
Silas S. Brown
2

Avant d'ajouter le chromedriver à votre chemin, assurez-vous qu'il s'agit de la même version que votre navigateur.

Sinon, vous devrez faire correspondre les versions: mettre à jour / rétrograder votre chrome et mettre à niveau / rétrograder votre pilote Web.

Je recommande de mettre à jour votre version de chrome autant que possible, et la correspondance avec le webdriver.

Pour mettre à jour Chrome:

  • Dans le coin supérieur droit, cliquez sur les trois points.
  • cliquez help->About Google Chrome
  • mettre à jour la version et redémarrer Chrome

Ensuite, téléchargez la version compatible ici: http://chromedriver.chromium.org/downloads .

Remarque: le dernier chromedriver ne correspond pas toujours à la dernière version de chrome!

Vous pouvez maintenant l'ajouter au PATH:

  1. créez un nouveau dossier quelque part sur votre ordinateur, où vous placerez vos pilotes Web. J'ai créé un dossier nommé webdriversdansC:\Program Files

  2. copiez le chemin du dossier. Dans mon cas, c'étaitC:\Program Files\webdrivers

  3. clic droit sur this PC-> properties:

entrez la description de l'image ici

  1. Sur le clic droit Advanced System settings
  2. Cliquez sur Environment Variables
  3. Dans System variables, cliquez surpath et cliquez suredit
  4. Cliquez sur new
  5. collez le chemin que vous avez copié avant
  6. cliquez sur OK sur toutes les fenêtres

C'est tout! J'ai utilisé pycharm et j'ai dû le rouvrir. Peut-être que c'est la même chose avec d'autres IDE ou terminaux.

Alon Gouldman
la source
1

Pourrait essayer de redémarrer l'ordinateur s'il ne fonctionne pas après que vous soyez sûr que PATH est correctement défini.

Dans mon cas sur Windows 7, j'ai toujours eu l'erreur sur WebDriverException: Message: pour chromedriver, gecodriver, IEDriverServer. Je suis presque sûr que j'ai le chemin correct. Redémarrez l'ordinateur, tout fonctionne

apprentissage lapin
la source
1

Le meilleur moyen est certainement ici:

Téléchargez et décompressez chromedriver et placez 'chromedriver.exe' dans C: \ Python27 \ Scripts et vous n'avez pas besoin de fournir le chemin du pilote, juste

driver= webdriver.Chrome()

Vous avez terminé, pas besoin d'ajouter des chemins ou quoi que ce soit

nirupam kapoor
la source
0

Dans mon cas, cette erreur disparaît lorsque j'ai copié le fichier chromedriver dans le dossier c: \ Windows. C'est parce que le répertoire windows se trouve dans le chemin que le script python vérifie pour la disponibilité de chromedriver.

Hamid
la source
0

Si vous utilisez un interpréteur distant, vous devez également vérifier si son exécutable PATH est défini. Dans mon cas, le passage de l'interpréteur Docker distant à l'interprète local a résolu le problème.

Rafał
la source
0

J'ai rencontré le même problème que le vôtre. J'utilise PyCharm pour écrire des programmes et je pense que le problème réside dans la configuration de l'environnement dans PyCharm plutôt que dans le système d'exploitation. J'ai résolu le problème en accédant à la configuration du script, puis en éditant le PATH dans les variables d'environnement manuellement. J'espère que ceci vous aidera!

sia1998
la source
une autre option consiste à déplacer votre chromedriver directement vers le / usr / local / bin, alors vous n'êtes pas du tout dérangé par l'ajout d'un chemin
sia1998
0

Ajoutez le pilote Web (chromedriver.exe ou geckodriver.exe) ici C: \ Windows . Cela a fonctionné dans mon cas

Suguresh Soppimath
la source
0

Le meilleur moyen est peut-être d'obtenir le répertoire actuel et d'y ajouter l'adresse restante. Comme ce code (Word sur Windows. Sur Linux, vous pouvez utiliser quelque chose de la ligne pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


la source
0

Lorsque j'ai téléchargé chromedriver.exe, je le déplace simplement dans le dossier PATH C: \ Windows \ System32 \ chromedriver.exe et j'ai eu exactement le même problème.

Pour moi, la solution consistait simplement à changer de dossier dans PATH, donc je l'ai simplement déplacé dans le dossier bin de Pycharm Community qui était également dans PATH. ex:

  • C: \ Windows \ System32 \ chromedriver.exe -> M'a donné une exception
  • C: \ Program Files \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> a bien fonctionné
Denis Imamovic
la source
0

Eu ce problème avec Mac Mojave exécutant le framework de test Robot et Chrome 77. Cela a résolu le problème. Félicitations à @Navarasu pour m'avoir indiqué la bonne voie.

$ pip install webdriver-manager --user # install webdriver-manager lib for python
$ python # open python prompt

Ensuite, dans l'invite python:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())

# ctrl+d to exit

Cela conduit à l'erreur suivante:

Checking for mac64 chromedriver:xx.x.xxxx.xx in cache
There is no cached driver. Downloading new one...
Trying to download new driver from http://chromedriver.storage.googleapis.com/xx.x.xxxx.xx/chromedriver_mac64.zip
...
TypeError: makedirs() got an unexpected keyword argument 'exist_ok'
  • J'ai maintenant le dernier lien de téléchargement
    • Téléchargez et décompressez chromedriver où vous le souhaitez
    • Par exemple: ~/chromedriver/chromedriver

Ouvrez ~/.bash_profileavec l'éditeur et ajoutez:

export PATH="$HOME/chromedriver:$PATH"

Ouvrir une nouvelle fenêtre de terminal, ta-da 🎉

sampoh
la source
0

J'ai eu ce problème sur Webdriver 3.8.0 (Chrome 73.0.3683.103 et ChromeDriver 73.0.3683.68). Le problème a disparu après que je l'ai fait

pip install -U selenium

pour mettre à niveau Webdriver vers la version 3.14.1.

Silas S. Brown
la source
0

Vérifiez le chemin de votre pilote Chrome, il se peut qu'il ne l'obtienne pas. Copiez simplement et collez l'emplacement du pilote dans le code.

ChandyShot
la source
-3

(pour les utilisateurs de Mac) J'ai le même problème mais j'ai résolu de cette manière simple: vous devez mettre votre chromedriver.exe dans le même dossier que votre script exécuté et que dans pyhton écrivez cette instruction:

importer le système d'exploitation

os.environ ["PATH"] + = os.pathsep + r'X: / votre / dossier / script / '

walid_data
la source
2
La solution que vous proposez est exactement la même que celle des autres utilisateurs. Veuillez prêter attention aux autres réponses avant de publier.
Nikita Kniazev
@Walid_data ne dit-il pas cela pour souligner qu'il pourrait s'agir d'un problème Windows uniquement?
benc