Messaggio di errore: "L'eseguibile" chromedriver "deve essere disponibile nel percorso"


172

Sto usando selenio con python e ho scaricato il chromedriver per il mio computer Windows da questo sito: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Dopo aver scaricato il file zip, ho decompresso il file zip nella mia cartella dei download. Quindi ho inserito il percorso del file binario eseguibile (C: \ Users \ michael \ Downloads \ chromedriver_win32) nella variabile d'ambiente "Path".

Tuttavia, quando eseguo il seguente codice:

  from selenium import webdriver

  driver = webdriver.Chrome()

... Continuo a ricevere il seguente messaggio di errore:

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

Ma - come spiegato sopra - l'eseguibile è (!) Nel percorso ... cosa sta succedendo qui?


20
Prova a copiare chromedriver.exenella stessa directory dello script Python.
Malik Brahimi,

4
Installazione tramite Chocolatey aggiungerà al percorso, choco install chromedriver.
WhatIsHeDoing

per l'utente ha riscontrato questo problema in pycharm, il riavvio lo risolverà
Charles Chow,

Sono d'accordo con la risposta di ImNt. Anche se vorrei aggiungere che per coloro che usano virtualenv, dovresti eseguire python nel tuo file venv come amministratore, usando il seguente formato di esempio: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda

@MalikBrahimi Ho cercato questa soluzione ovunque e nessuno di loro ha funzionato fino a quando non ho trovato il tuo commento. Grazie mille
user2720864

Risposte:


180

Puoi verificare se effettivamente si trova nel PERCORSO, se apri un cmd e digiti chromedriver(supponendo che il tuo eseguibile chromedriver sia ancora chiamato così) e premi Invio. Se Starting ChromeDriver 2.15.322448appare, il PERCORSO è impostato correttamente e c'è qualcos'altro che non va.

In alternativa puoi usare un percorso diretto per il chromedriver in questo modo:

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

Quindi nel tuo caso specifico:

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

3
Grazie per la risposta: "Avvio di ChromeDriver 2.15.322448" è apparso. "Sono consentite solo connessioni locali." anche apparso. ... Ma suppongo che sia ok? .... Una cosa che mi chiedevo è questa: sul sito web era disponibile solo una versione a 32 bit di chromedriver .... ma questo dovrebbe funzionare bene con le mie finestre a 64 bit, non è vero?
steady_progress

@steady_progress Sì, è ok. E questo funzionerà con Windows a 64 bit; Lo sto usando da solo. Ho il sospetto che forse la versione di selenio potrebbe causare il problema? Quale hai installato? L'hai installato usando pip?
dal

Hai provato a utilizzare il percorso diretto per il driver quando hai chiamato il webdriver come ho già detto nella risposta? Ha fallito con lo stesso errore?
dal

4
Quando aggiungi webdriver al tuo PATH, indipendentemente dal sistema operativo, includi solo la directory in cui è memorizzato il webdriver, non l'eseguibile. Esempio: PATH = $ PATH: / path / to / webdriver / cartella, non PATH = $ PATH: / path / to / webdriver / chromedriver. Inoltre, l'utilizzo di PATH è molto più portabile del passaggio della posizione nella chiamata webdriver.Chrome (), poiché possiamo sempre supporre che il PATH sia impostato correttamente ovunque venga eseguito il codice, ma non possiamo supporre che la struttura dei file sia impostata in modo identico .
Afide,

2
ho tentato di utilizzare la stessa soluzione ma ho riscontrato questo errore: WebDriverException: messaggio: l'eseguibile "chromedriver.exe" potrebbe avere autorizzazioni errate. Si prega di consultare sites.google.com/a/chromium.org/chromedriver/home
Yogesh

152

Vedo che le discussioni parlano ancora del vecchio modo di impostare chromedriver scaricando il binario e configurando il percorso manualmente.

Questo può essere fatto automaticamente usando webdriver-manager

pip install webdriver-manager

Ora il codice sopra nella domanda funzionerà semplicemente con la modifica seguente,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

Lo stesso può essere usato per impostare Firefox, Edge e cioè i binari.


@Navarasu con tutto il rispetto perché qualcuno dovrebbe seguire qualcosa da 3.6 quando la corrente è 3.7. La prossima volta sarebbe bello dire esplicitamente che è per 3.6 .... Grazie
Azy Sır

5
è fantastico anche perché rimane aggiornato
Leslie Alldridge,

1
La cosa positiva di questa soluzione è che ha una maggiore flessibilità rispetto ad altre soluzioni basate sulla configurazione di percorsi specifici, che ritengo poco pratica in termini di utilizzo dello script su più macchine.
IBRAHIM,

14

Stessa situazione con Pycharm Community Edition, quindi, come per cmd, è necessario riavviare il proprio ide per ricaricare le variabili del percorso. Riavvia il tuo ide e dovrebbe andare bene.


2
Grazie. Ho avuto lo stesso problema in Visual Studios. Ho appena riavviato IDE e ha funzionato :) Grazie
DollarAkshay,

Ha funzionato anche per me.
CARTOS,

13

Su Linux (Ubuntu o Debian):

sudo apt install chromium-chromedriver

Su macOS installare https://brew.sh/ quindi fare

brew cask install chromedriver

Quindi usa: driver = webdriver.Chrome ('/ usr / lib / chromium-browser / chromedriver') .. senza cambiare $ PATH
alchimia

@alchemy sei sicuro di doverlo fare? Come lo ricordo, ha driver = webdriver.Chrome()funzionato bene per me.
Boris,

Ciao Boris, sì, non so perché ... anche dopo aver aggiunto a PATH non ha funzionato senza. Sono sicuro che impostare correttamente il percorso sarebbe meglio, ma ho solo bisogno di fare rapidamente una cosa con Chromedriver
alchimia il

9

Dobbiamo aggiungere la stringa del percorso, iniziare con la lettera rprima della stringa, per la stringa non elaborata. Ho provato in questo modo e funziona.

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

3

Qualche ulteriore input / chiarimento per i futuri lettori di questo thread, per evitare di armeggiare con il PATH env. variabile a livello di Windows e riavvio del sistema Windows: (copia della mia risposta da https://stackoverflow.com/a/49851498/9083077 come applicabile a Chrome):

(1) Scarica chromedriver (come descritto in questo thread in precedenza) e posiziona il file (decompresso) chromedriver.exe in X: \ Cartella \ di \ tua \ scelta

(2) Esempio di codice 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

Note: (1) Il codice di esempio (nella risposta di riferimento) potrebbe impiegare circa 5 secondi per aprire il browser Firefox per l'URL specificato. (2) La console di Python mostrerebbe il seguente errore se non c'è già un server in esecuzione all'URL specificato o serve una pagina con il titolo contenente la stringa "Django": asserire "Django" in browser.title AssertionError


3

Per Linux e OSX

Passaggio 1: scarica 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

Passaggio 2: aggiungi chromedriver a /usr/local/bin

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

Ora dovresti essere in grado di eseguire

from selenium import webdriver

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

senza problemi


È stato chiaramente affermato che sta usando Windows, questo è per Linux.
misantroop

1
@misantroop Ho aggiornato la mia risposta per chiarire questo punto.
Giorgos Myrianthous

2

Quando decomprimi il chromedriver, specifica una posizione esatta in modo da poterla rintracciare in seguito. Di seguito, stai ottenendo il giusto chromedriver per il tuo sistema operativo e quindi decomprimendolo in una posizione esatta, che potrebbe essere fornita come argomento in seguito nel tuo codice.

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


3
O da /usr/local/bin/installare a livello globale.
Jeppe,

2

Se stai lavorando con il robot framework RIDE. Quindi è possibile scaricare Chromedriver.exedal suo sito Web ufficiale e conservare questo file .exe nella C:\Python27\Scriptsdirectory. Ora menziona questo percorso come variabile di ambiente, ad es. C:\Python27\Scripts\chromedriver.exe.

Riavvia il computer ed esegui di nuovo lo stesso test case. Non avrai più questo problema.


2

Secondo le istruzioni , è necessario includere il percorso di ChromeDriver quando si crea un'istanza di webdriver.Chrome ad es .:

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

Se scorri queste istruzioni verso destra, c'è un commento che dice "Argomento facoltativo, se non specificato cercherà il percorso". Ma almeno alcune versioni di webdriver sembrano controllare qualsiasi chromedriver che trovano nel percorso e se non è 'contento' di esso (versione errata ecc.) Non lo userà (a meno che non sia costretto a provare comunque impostando questo parametro). Continuerà a cercare il percorso per una versione migliore, quindi lamentarsi se non riesce a trovarne una. ("Nessun cromato adatto trovato" sarebbe stato un messaggio migliore di "nessun cromato trovato".)
Silas S. Brown

2

Prima di aggiungere il chromedriver al tuo percorso, assicurati che sia la stessa versione del tuo browser.

In caso contrario, dovrai abbinare le versioni: aggiorna / esegui il downgrade di Chrome e aggiorna / esegui il downgrade del webdriver.

Consiglio di aggiornare il più possibile la tua versione di Chrome e di abbinare il webdriver.

Per aggiornare Chrome:

  • Nell'angolo in alto a destra, fai clic sui tre punti.
  • fare clic su help->About Google Chrome
  • aggiorna la versione e riavvia Chrome

Quindi scaricare la versione compatibile da qui: http://chromedriver.chromium.org/downloads .

Nota: il nuovissimo chromedriver non sempre corrisponde alla versione più recente di Chrome!

Ora puoi aggiungerlo al PERCORSO:

  1. crea una nuova cartella da qualche parte nel tuo computer, dove posizionerai i tuoi driver web. Ho creato una cartella denominata webdriversinC:\Program Files

  2. copia il percorso della cartella. Nel mio caso lo eraC:\Program Files\webdrivers

  3. fare clic destro su this PC-> properties:

inserisci qui la descrizione dell'immagine

  1. Con il tasto destro Advanced System settings
  2. Clic Environment Variables
  3. In System variables, fare clic su pathe fare clicedit
  4. clic new
  5. incolla il percorso che hai copiato in precedenza
  6. fai clic su OK su tutte le finestre

Questo è tutto! Ho usato Pycharm e ho dovuto riaprirlo. Forse è lo stesso con altri IDE o terminali.


1

Potrebbe provare a riavviare il computer se non funziona dopo aver verificato che PATH è impostato correttamente.

Nel mio caso su Windows 7, ho sempre ricevuto l'errore su WebDriverException: Messaggio: per chromedriver, gecodriver, IEDriverServer. Sono abbastanza sicuro di avere il percorso corretto. Riavvia il computer, tutto funziona


1

Il modo migliore di sicuro è qui:

Scarica e decomprimi chromedriver e inserisci 'chromedriver.exe' in C: \ Python27 \ Scripts e quindi non devi fornire il percorso del driver, solo

driver= webdriver.Chrome()

Non hai bisogno di aggiungere percorsi o altro


0

Nel mio caso, questo errore scompare quando ho copiato il file chromedriver nella cartella c: \ Windows. È perché la directory di Windows è nel percorso in cui lo script python verifica la disponibilità di chromedriver.


0

Se si utilizza l'interprete remoto, è necessario verificare anche se è definito il suo PERCORSO eseguibile. Nel mio caso il passaggio dall'interprete Docker remoto all'interprete locale ha risolto il problema.


0

Ho riscontrato lo stesso problema del tuo. Sto usando PyCharm per scrivere programmi e penso che il problema risieda nella configurazione dell'ambiente in PyCharm piuttosto che nel sistema operativo. Ho risolto il problema andando alla configurazione dello script e modificando manualmente il PERCORSO nelle variabili di ambiente. Spero che ti sia d'aiuto!


un'altra opzione è quella di spostare il tuo chromedriver direttamente nel / usr / local / bin, quindi non ti preoccupi di aggiungere un percorso
sia1998

0

Aggiungi il webdriver (chromedriver.exe o geckodriver.exe) qui C: \ Windows . Questo ha funzionato nel mio caso


0

Il modo migliore è forse quello di ottenere la directory corrente e aggiungere l'indirizzo rimanente ad essa. Come questo codice (Word su Windows. Su Linux puoi usare qualcosa di line pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


0

Quando ho scaricato chromedriver.exe l'ho semplicemente spostato nella cartella PATH C: \ Windows \ System32 \ chromedriver.exe e ho avuto esattamente lo stesso problema.

Per me la soluzione era semplicemente quella di cambiare cartella in PATH, quindi l'ho spostata nella cartella bin Pycharm Community che era anche in PATH. ex:

  • C: \ Windows \ System32 \ chromedriver.exe -> Mi ha fatto eccezione
  • C: \ Programmi \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> ha funzionato bene

0

Ho avuto questo problema con Mac Mojave con il framework di test Robot e Chrome 77. Questo ha risolto il problema. Kudos @Navarasu per avermi indicato la strada giusta.

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

Successivamente, nel prompt di Python:

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

# ctrl+d to exit

Questo porta al seguente errore:

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'
  • Ora ho il nuovo link per il download
    • Scarica e decomprimi chromedriver dove vuoi
    • Per esempio: ~/chromedriver/chromedriver

Apri ~/.bash_profilecon l'editor e aggiungi:

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

Apri una nuova finestra del terminale, ta-da 🎉


0

Ho avuto questo problema su Webdriver 3.8.0 (Chrome 73.0.3683.103 e ChromeDriver 73.0.3683.68). Il problema è scomparso dopo che l'ho fatto

pip install -U selenium

per aggiornare Webdriver alla 3.14.1.


0

Controlla il percorso del tuo driver Chrome, potrebbe non ottenerlo da lì. Copia semplicemente incolla la posizione del driver nel codice.


-3

(per utenti Mac) Ho lo stesso problema, ma ho risolto in questo modo semplice: devi inserire il tuo chromedriver.exe nella stessa cartella dello script eseguito e poi in pyhton scrivi questa istruzione:

import os

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


2
La soluzione che stai proponendo è esattamente la stessa di un altro utente. Si prega di prestare attenzione ad altre risposte prima di pubblicare.
Nikita Kniazev,

@Walid_data non sta dicendo questo per sottolineare che potrebbe essere un problema solo per Windows?
benc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.