Fehlermeldung: "Die ausführbare Datei 'chromedriver' muss im Pfad verfügbar sein."


171

Ich verwende Selen mit Python und habe den Chromedriver für meinen Windows-Computer von dieser Website heruntergeladen: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Nach dem Herunterladen der Zip-Datei habe ich die Zip-Datei in meinen Download-Ordner entpackt. Dann habe ich den Pfad zur ausführbaren Binärdatei (C: \ Users \ michael \ Downloads \ chromedriver_win32) in die Umgebungsvariable "Path" eingefügt.

Wenn ich jedoch den folgenden Code ausführe:

  from selenium import webdriver

  driver = webdriver.Chrome()

... Ich erhalte immer wieder die folgende Fehlermeldung:

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

Aber - wie oben erklärt - die ausführbare Datei befindet sich (!) Im Pfad ... was ist hier los?


19
Versuchen Sie, das chromedriver.exein dasselbe Verzeichnis wie Ihr Python-Skript zu kopieren .
Malik Brahimi

4
Bei der Installation über Chocolatey wird es dem Pfad hinzugefügt choco install chromedriver.
WhatIsHeDoing

Für Benutzer, die dieses Problem in Pycharm festgestellt haben, wird es durch einen Neustart behoben
Charles Chow,

Ich stimme der Antwort von ImNt zu. Obwohl ich das für diejenigen hinzufügen möchte, die virtualenv verwenden, sollten Sie Python in Ihrer venv-Datei als Administrator ausführen und das folgende Beispielformat verwenden: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda

@MalikBrahimi Ich habe überall nach dieser Lösung gesucht und keine davon hat tatsächlich funktioniert, bis ich Ihren Kommentar gefunden habe. Vielen Dank
user2720864

Antworten:


177

Sie können testen, ob es sich tatsächlich im PATH befindet, wenn Sie ein chromedrivercmd öffnen und eingeben (vorausgesetzt, Ihre ausführbare Chromedriver-Datei heißt noch immer so) und die Eingabetaste drücken. Wenn Starting ChromeDriver 2.15.322448angezeigt wird, ist der PFAD entsprechend eingestellt und es läuft etwas anderes schief.

Alternativ können Sie einen direkten Pfad zum Chromedriver wie folgt verwenden:

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

Also in Ihrem speziellen Fall:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")

3
Vielen Dank für die Antwort: "ChromeDriver 2.15.322448 wird gestartet" wurde angezeigt. "Es sind nur lokale Verbindungen zulässig." erschien auch. ... aber ich denke das ist ok? .... Eine Sache, die ich mich gefragt habe, ist folgende: Auf der Website war nur eine 32-Bit-Version von chromedriver verfügbar .... aber das sollte mit meinen 64-Bit-Fenstern gut funktionieren, nicht wahr?
Steady_Progress

@steady_progress Ja, es ist in Ordnung. Und das funktioniert mit 64-Bit-Windows; Ich benutze es selbst. Ich vermute, vielleicht kann die Selenversion das Problem verursachen? Welches hast du installiert? Haben Sie es mit installiert pip?
lmNt

Haben Sie versucht, den direkten Pfad zum Treiber zu verwenden, wenn Sie den Web-Treiber aufrufen, wie in der Antwort erwähnt? Ist es mit dem gleichen Fehler fehlgeschlagen?
lmNt

4
Wenn Sie Ihrem PATH Web-Treiber hinzufügen, geben Sie unabhängig vom Betriebssystem nur das Verzeichnis an, in dem Ihr Web-Treiber gespeichert ist, nicht die ausführbare Datei. Beispiel: PATH = $ PATH: / path / to / webdriver / folder, nicht PATH = $ PATH: / path / to / webdriver / chromedriver. Darüber hinaus ist die Verwendung von PATH viel portabler als die Übergabe des Speicherorts an Ihren Webdriver.Chrome () -Aufruf, da wir immer davon ausgehen können, dass PATH überall dort richtig eingestellt ist, wo Ihr Code ausgeführt wird, aber nicht davon ausgehen können, dass die Dateistruktur identisch eingerichtet ist .
Blattlaus

2
Es wurde versucht, dieselbe Lösung zu verwenden, es wurde jedoch der folgende Fehler angezeigt: WebDriverException: Meldung: Die ausführbare Datei 'chromedriver.exe' verfügt möglicherweise über falsche Berechtigungen. Bitte sehen Sie sites.google.com/a/chromium.org/chromedriver/home
Yogesh

147

Ich sehe, dass in den Diskussionen immer noch über die alte Methode zum Einrichten von chromedriver gesprochen wird, indem die Binärdatei heruntergeladen und der Pfad manuell konfiguriert wird.

Dies kann automatisch mit dem Webdriver-Manager erfolgen

pip install webdriver-manager

Jetzt funktioniert der obige Code in der Frage einfach mit der folgenden Änderung:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

Das gleiche kann verwendet werden, um Firefox-, Edge- und dh Binärdateien festzulegen.


@Navarasu mit allem Respekt, warum sollte jemand etwas von 3.6 folgen, wenn der Strom 3.7 ist. Das nächste Mal wäre es schön, explizit zu sagen, dass es für 3.6 ist .... Danke
Azy Sır

5
Das ist großartig, da es auch auf dem neuesten Stand bleibt
Leslie Alldridge

1
Das Gute an dieser Lösung ist, dass sie flexibler ist als andere Lösungen, die auf bestimmten Pfadeinstellungen basieren, was ich in Bezug auf die Verwendung des Skripts auf mehreren Computern als unpraktisch empfinde.
IBRAHIM

14

Dieselbe Situation wie bei der Pycharm Community Edition. Wie bei cmd müssen Sie Ihre ide neu starten, um die Pfadvariablen neu zu laden. Starten Sie Ihre Idee neu und es sollte in Ordnung sein.


2
Vielen Dank. Ich hatte das gleiche Problem in Visual Studios.
Ich habe

Hat auch für mich gearbeitet.
CARTOS

13

Unter Linux (Ubuntu oder Debian):

sudo apt install chromium-chromedriver

Installieren Sie unter macOS https://brew.sh/ und tun Sie dies dann

brew cask install chromedriver

Verwenden Sie dann: driver = webdriver.Chrome ('/ usr / lib / chrom-browser / chromedriver') .. ohne $ PATH zu ändern
Alchemie

@alchemy bist du sicher, dass du das tun musst? Soweit ich mich erinnere, hat es driver = webdriver.Chrome()gut für mich funktioniert.
Boris

Hallo Boris, ja, ich weiß nicht warum ... auch nach dem Hinzufügen zu PATH hat es ohne das nicht funktioniert. Ich bin mir sicher, dass es besser wäre, den Pfad richtig einzurichten, aber ich muss nur eines schnell mit Chromedriver erledigen
Alchemie

9

Wir müssen eine Pfadzeichenfolge hinzufügen, beginnend mit dem Buchstaben rvor der Zeichenfolge für die Rohzeichenfolge. Ich habe auf diese Weise getestet und es funktioniert.

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

3

Einige zusätzliche Eingaben / Erläuterungen für zukünftige Leser dieses Threads, um ein Basteln mit der PATH-Umgebung zu vermeiden. Variable auf Windows-Ebene und Neustart des Windows-Systems: (Kopie meiner Antwort von https://stackoverflow.com/a/49851498/9083077, wie für Chrome zutreffend):

(1) Laden Sie chromedriver herunter (wie in diesem Thread zuvor beschrieben) und platzieren Sie die (entpackte) chromedriver.exe unter X: \ Folder \ Ihrer Wahl

(2) Python-Codebeispiel:

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

Hinweise: (1) Es kann ungefähr 5 Sekunden dauern, bis der Beispielcode (in der Antwort, auf die verwiesen wird) den Firefox-Browser für die angegebene URL öffnet. (2) Die Python-Konsole zeigt den folgenden Fehler an, wenn noch kein Server mit der angegebenen URL ausgeführt wird oder eine Seite mit dem Titel mit der Zeichenfolge 'Django' bereitgestellt wird: Aktivieren Sie 'Django' in browser.title AssertionError


3

Für Linux und OSX

Schritt 1: Laden Sie chromedriver herunter

# 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

Schritt 2: Fügen Sie chromedriver hinzu /usr/local/bin

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

Sie sollten jetzt laufen können

from selenium import webdriver

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

ohne Probleme


Es wurde klargestellt, dass er Windows verwendet, dies ist für Linux.
Misantroop

1
@misantroop Ich habe meine Antwort aktualisiert, um dies klar zu machen.
Giorgos Myrianthous

2

Geben Sie beim Entpacken von chromedriver einen genauen Speicherort an, damit Sie ihn später verfolgen können. Im Folgenden erhalten Sie den richtigen Chromedriver für Ihr Betriebssystem und entpacken ihn an einen genauen Speicherort, der später in Ihrem Code als Argument angegeben werden kann.

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


3
Oder /usr/local/bin/global zu installieren.
Jeppe

2

Wenn Sie mit dem Roboter-Framework RIDE arbeiten. Dann können Sie Chromedriver.exevon der offiziellen Website herunterladen und diese EXE-Datei im C:\Python27\ScriptsVerzeichnis aufbewahren. Erwähnen Sie nun diesen Pfad als Ihre Umgebungsvariable, z. C:\Python27\Scripts\chromedriver.exe.

Starten Sie Ihren Computer neu und führen Sie denselben Testfall erneut aus. Sie werden dieses Problem nicht wieder bekommen.


2

Gemäß der Anweisung müssen Sie den Pfad zu ChromeDriver angeben, wenn Sie den Webdriver instanziieren.

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

Wenn Sie diese Anweisungen nach rechts scrollen, wird ein Kommentar mit dem Titel "Optionales Argument, falls nicht angegeben, wird der Pfad durchsucht" angezeigt. Aber zumindest einige Versionen von Webdriver scheinen jeden Chromedriver zu überprüfen, den sie im Pfad finden, und wenn er damit nicht zufrieden ist (falsche Version usw.), wird er nicht verwendet (es sei denn, er muss es trotzdem versuchen, indem er diesen Parameter einstellt). Es wird weiterhin nach einer besseren Version suchen und sich dann beschweren, wenn es keine findet. ("Kein geeigneter Chromedriver gefunden" wäre eine bessere Nachricht gewesen als "Kein Chromedriver gefunden".)
Silas S. Brown

2

Stellen Sie vor dem Hinzufügen des Chromedrivers zu Ihrem Pfad sicher, dass er dieselbe Version wie Ihr Browser hat.

Wenn nicht, müssen Sie die Versionen anpassen: Aktualisieren / downgraden Sie Ihr Chrome und aktualisieren / downgraden Sie Ihren Web-Treiber.

Ich empfehle, Ihre Chrome-Version so weit wie möglich zu aktualisieren und den Web-Treiber anzupassen.

So aktualisieren Sie Chrome:

  • Klicken Sie oben rechts auf die drei Punkte.
  • Klicken Sie auf help->About Google Chrome
  • Aktualisieren Sie die Version und starten Sie Chrome neu

Laden Sie dann die kompatible Version von hier herunter: http://chromedriver.chromium.org/downloads .

Hinweis: Der neueste Chromtreiber passt nicht immer zur neuesten Chromversion!

Jetzt können Sie es dem PFAD hinzufügen:

  1. Erstellen Sie irgendwo auf Ihrem Computer einen neuen Ordner, in dem Sie Ihre Webtreiber ablegen. Ich habe einen Ordner mit dem Namen webdriversin erstelltC:\Program Files

  2. Kopieren Sie den Ordnerpfad. In meinem Fall war esC:\Program Files\webdrivers

  3. Rechtsklick auf this PC-> properties:

Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie mit der rechten Maustaste Advanced System settings
  2. Klicken Environment Variables
  3. In System variables, klicken Sie auf pathund klicken Sie aufedit
  4. klicken new
  5. Fügen Sie den zuvor kopierten Pfad ein
  6. Klicken Sie in allen Fenstern auf OK

Das ist es! Ich habe Pycharm benutzt und musste es wieder öffnen. Vielleicht ist es das gleiche mit anderen IDEs oder Terminals.


1

Könnte versuchen, den Computer neu zu starten, wenn er nicht funktioniert, nachdem Sie sicher sind, dass PATH richtig eingestellt ist.

In meinem Fall unter Windows 7 wurde bei WebDriverException immer der Fehler angezeigt: Nachricht: für chromedriver, gecodriver, IEDriverServer. Ich bin mir ziemlich sicher, dass ich den richtigen Weg habe. Starten Sie den Computer neu, alle funktionieren


0

In meinem Fall verschwindet dieser Fehler, wenn ich die chromedriver-Datei in den Ordner c: \ Windows kopiert habe. Das Windows-Verzeichnis befindet sich in dem Pfad, in dem das Python-Skript die Verfügbarkeit von Chromedriver überprüft.


0

Wenn Sie einen Remote-Interpreter verwenden, müssen Sie auch überprüfen, ob der ausführbare Pfad definiert ist. In meinem Fall löste der Wechsel vom Remote-Docker-Interpreter zum lokalen Interpreter das Problem.


0

Ich bin auf dasselbe Problem gestoßen wie Sie. Ich verwende PyCharm zum Schreiben von Programmen, und ich denke, das Problem liegt eher in der Einrichtung der Umgebung in PyCharm als im Betriebssystem. Ich habe das Problem gelöst, indem ich zur Skriptkonfiguration gegangen bin und dann den Pfad in Umgebungsvariablen manuell bearbeitet habe. Ich hoffe, Sie finden das hilfreich!


Eine andere Möglichkeit besteht darin, Ihren Chromedriver direkt in den / usr / local / bin zu verschieben, damit Sie überhaupt keinen Pfad hinzufügen müssen
sia1998

0

Fügen Sie hier den Webdriver (chromedriver.exe oder geckodriver.exe) C: \ Windows hinzu . Das hat in meinem Fall funktioniert


0

Der beste Weg ist vielleicht, das aktuelle Verzeichnis abzurufen und die verbleibende Adresse daran anzuhängen. Wie dieser Code (Word unter Windows. Unter Linux können Sie etwas Zeile pwd verwenden): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


0

Als ich chromedriver.exe heruntergeladen habe, habe ich es einfach in den PATH-Ordner C: \ Windows \ System32 \ chromedriver.exe verschoben und hatte genau das gleiche Problem.

Für mich bestand die Lösung darin, nur den Ordner in PATH zu ändern, also habe ich ihn einfach in den Pycharm Community-Bin-Ordner verschoben, der sich ebenfalls in PATH befand. Ex:

  • C: \ Windows \ System32 \ chromedriver.exe -> Hat mir eine Ausnahme gegeben
  • C: \ Programme \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> hat einwandfrei funktioniert

0

Hatte dieses Problem mit Mac Mojave, auf dem das Robot Test Framework und Chrome 77 ausgeführt wurden. Dies löste das Problem. Ein großes Lob an Navarasu, dass er mich auf den richtigen Weg gebracht hat.

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

Als nächstes in der Python-Eingabeaufforderung:

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

# ctrl+d to exit

Dies führt zu folgendem Fehler:

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'
  • Ich habe jetzt den neuesten Download-Link
    • Laden Sie chromedriver herunter und entpacken Sie es an die gewünschte Stelle
    • Beispielsweise: ~/chromedriver/chromedriver

~/.bash_profileMit Editor öffnen und hinzufügen:

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

Öffnen Sie das neue Terminalfenster, ta-da 🎉


0

Ich hatte dieses Problem unter Webdriver 3.8.0 (Chrome 73.0.3683.103 und ChromeDriver 73.0.3683.68). Das Problem verschwand, nachdem ich es getan hatte

pip install -U selenium

um Webdriver auf 3.14.1 zu aktualisieren.


0

Der beste Weg ist sicher hier:

Laden Sie chromedriver herunter, entpacken Sie es und fügen Sie 'chromedriver.exe' in C: \ Python27 \ Scripts ein. Dann müssen Sie nicht nur den Pfad des Treibers angeben

driver= webdriver.Chrome()

Sie müssen keine Pfade oder ähnliches hinzufügen


0

Überprüfen Sie den Pfad Ihres Chrome-Treibers, der von dort möglicherweise nicht abgerufen wird. Kopieren Sie einfach den Treiberspeicherort und fügen Sie ihn in den Code ein.


-3

(für Mac-Benutzer) Ich habe das gleiche Problem, aber ich habe es auf einfache Weise gelöst: Sie müssen Ihre chromedriver.exe im selben Ordner zu Ihrem ausgeführten Skript ablegen und dann in pyhton diese Anweisung schreiben:

os importieren

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


2
Die von Ihnen vorgeschlagene Lösung ist genau die gleiche wie die eines anderen Benutzers. Bitte beachten Sie vor dem Posten andere Antworten.
Nikita Kniazev

Sagt @walid_data dies nicht, um darauf hinzuweisen, dass es sich möglicherweise nur um ein Windows-Problem handelt?
Benc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.