Mensaje de error: "el ejecutable 'chromedriver' debe estar disponible en la ruta"

171

Estoy usando selenio con python y he descargado el chromedriver para mi computadora con Windows desde este sitio: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Después de descargar el archivo zip, descomprimí el archivo zip en mi carpeta de descargas. Luego puse la ruta al binario ejecutable (C: \ Users \ michael \ Downloads \ chromedriver_win32) en la "Ruta" de la variable de entorno.

Sin embargo, cuando ejecuto el siguiente código:

  from selenium import webdriver

  driver = webdriver.Chrome()

... sigo recibiendo el siguiente mensaje de error:

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

Pero, como se explicó anteriormente, el ejecutable está (!) En el camino ... ¿qué está pasando aquí?

progreso estable
fuente
19
Intente copiarlo chromedriver.exeen el mismo directorio que su script Python.
Malik Brahimi
44
Instalación a través de Chocolatey lo añadirá a la ruta, choco install chromedriver.
WhatIsHeDoing
para el usuario que encontró este problema en pycharm, el reinicio lo resolverá
Charles Chow
Estoy de acuerdo con la respuesta de ImNt. Aunque me gustaría agregar eso para aquellos que usan virtualenv, debe ejecutar python en su archivo venv como Administrador, usando el siguiente formato de ejemplo: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda
@MalikBrahimi He estado buscando esta solución en todas partes y ninguna de ellas funcionó hasta que encontré tu comentario. Muchas gracias
user2720864

Respuestas:

177

Puede probar si realmente está en la RUTA, si abre un cmd y escribe chromedriver(suponiendo que su ejecutable chromedriver todavía se llame así) y presione Entrar. Si Starting ChromeDriver 2.15.322448aparece, la RUTA está configurada adecuadamente y hay algo más que sale mal.

Alternativamente, puede usar una ruta directa al controlador de cromo como esta:

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

Entonces, en su caso específico:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
lmNt
fuente
3
Gracias por la respuesta: "Iniciando ChromeDriver 2.15.322448" apareció. "Solo se permiten conexiones locales". También apareció. ... Pero supongo que esto está bien? ... Una cosa que me preguntaba es esto: en el sitio web solo había una versión de 32 bits de chromedriver disponible ... pero esto debería funcionar bien con mis ventanas de 64 bits, ¿no?
steady_progress
@steady_progress Sí, está bien. Y esto funcionará con Windows de 64 bits; Lo estoy usando yo mismo. Sospecho que quizás la versión de selenio puede causar el problema. ¿Cuál tienes instalado? ¿Lo has instalado usando pip?
lmNt
¿Has intentado usar la ruta directa al controlador al llamar al controlador web como mencioné en la respuesta? ¿Falló con el mismo error?
lmNt
44
Al agregar controladores web a su RUTA, sin importar el sistema operativo, incluya solo el directorio donde está almacenado su controlador web, no el ejecutable. Ejemplo: RUTA = $ RUTA: / ruta / a / webdriver / carpeta, no RUTA = $ RUTA: / ruta / a / webdriver / chromedriver. Además, usar PATH es mucho más portátil que pasar la ubicación a su controlador web. Llamada Chrome (), ya que siempre podemos suponer que PATH está configurado correctamente donde sea que se ejecute su código, pero no podemos asumir que su estructura de archivos está configurada de manera idéntica .
Áfido el
2
intenté usar la misma solución, pero recibí este error: WebDriverException: Mensaje: el ejecutable 'chromedriver.exe' puede tener permisos incorrectos. Visite sites.google.com/a/chromium.org/chromedriver/home
Yogesh,
150

Veo que las discusiones aún hablan sobre la antigua forma de configurar Chromeedriver descargando el binario y configurando la ruta manualmente.

Esto se puede hacer automáticamente usando webdriver-manager

pip install webdriver-manager

Ahora el código anterior en la pregunta funcionará simplemente con el siguiente cambio,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

Lo mismo se puede usar para configurar Firefox, Edge y binarios.

Navarasu
fuente
@Navarasu con el debido respeto, ¿por qué alguien seguiría algo de 3.6 cuando la actual es 3.7? La próxima vez sería bueno decir explícitamente que es por 3.6 ... Gracias
Azy Sır
55
esto es increíble, ya que se mantiene actualizado también
Leslie Alldridge
1
Lo bueno de esta solución es que tiene más flexibilidad que otras soluciones basadas en la configuración de ruta específica, lo que no me parece práctico en términos de uso del script en varias máquinas.
IBRAHIM
14

Misma situación con pycharm community edition, por lo tanto, en cuanto a cmd, debe reiniciar su ide para recargar las variables de ruta. Reinicia tu ide y debería estar bien.

Andrea Bisello
fuente
2
Gracias. Tuve el mismo problema en Visual Studios. Acabo de reiniciar IDE y funcionó :) Gracias
DollarAkshay
Me funcionó a mi también.
CARTOS
13

En Linux (Ubuntu o Debian):

sudo apt install chromium-chromedriver

En macOS instale https://brew.sh/ luego haga

brew cask install chromedriver
Boris
fuente
Luego use: driver = webdriver.Chrome ('/ usr / lib / chromium-browser / chromedriver') ... sin cambiar $ PATH
alquimia
@alquimia, ¿estás seguro de que necesitas hacer eso? Como lo recuerdo, driver = webdriver.Chrome()funcionó bien para mí.
Boris
Hola Boris, sí, no estoy seguro de por qué ... incluso después de agregar a PATH no funcionó sin eso. Estoy seguro de que configurar el camino correctamente sería mejor, pero solo necesito hacer una cosa con Chromedriver rápidamente
alquimia el
9

Tenemos que agregar una cadena de ruta, comience con la letra rantes de la cadena, para la cadena sin procesar. Probé de esta manera, y funciona.

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

Algunos aportes / aclaraciones adicionales para futuros lectores de este hilo, para evitar jugar con el entorno PATH. variable a nivel de Windows y reinicio del sistema de Windows: (copia de mi respuesta de https://stackoverflow.com/a/49851498/9083077 según corresponda a Chrome):

(1) Descargue chromedriver (como se describió en este hilo anteriormente) y coloque el chromedriver.exe (descomprimido) en X: \ Folder \ of \ your \ choice

(2) Ejemplo de código de 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

Notas: (1) Puede tomar alrededor de 5 segundos para que el código de muestra (en la respuesta mencionada) abra el navegador Firefox para la URL especificada. (2) La consola de Python mostraría el siguiente error si no hay un servidor que ya se esté ejecutando en la URL especificada o sirva una página con el título que contiene la cadena 'Django': afirme 'Django' en browser.title AssertionError

Snidhi Sofpro
fuente
3

Para Linux y OSX

Paso 1: descarga 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

Paso 2: agregue el controlador cromado a /usr/local/bin

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

Ahora deberías poder correr

from selenium import webdriver

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

sin ningún problema

Giorgos Myrianthous
fuente
Se dijo claramente que está usando Windows, esto es para Linux.
misantroop
1
@misantroop He actualizado mi respuesta para aclarar esto.
Giorgos Myrianthous
2

Cuando descomprima el chromedriver, especifique una ubicación exacta para poder rastrearlo más tarde. A continuación, obtendrá el controlador cromado adecuado para su sistema operativo y luego lo descomprimirá en una ubicación exacta, que podría proporcionarse como argumento más adelante en su código.

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

Harshdeep Singh
fuente
3
O para /usr/local/bin/instalar a nivel mundial.
Jeppe
2

Si está trabajando con el robot framework RIDE. Luego puede descargar Chromedriver.exedesde su sitio web oficial y mantener este archivo .exe en el C:\Python27\Scriptsdirectorio. Ahora mencione esta ruta como su variable de entorno, por ejemplo. C:\Python27\Scripts\chromedriver.exe.

Reinicie su computadora y vuelva a ejecutar el mismo caso de prueba. No volverá a tener este problema.

Rahul Tiwari
fuente
2

De acuerdo con las instrucciones , debe incluir la ruta a ChromeDriver al crear instancias de webdriver.

driver = webdriver.Chrome('/path/to/chromedriver')
AnnaVeranoShine
fuente
Si desplaza esas instrucciones hacia la derecha, hay un comentario que dice "Argumento opcional, si no se especifica buscará la ruta". Pero al menos algunas versiones de webdriver parecen verificar cualquier controlador cromado que encuentren en el camino y si no está 'contento' con él (versión incorrecta, etc.) no lo usará (a menos que se vea obligado a intentarlo de todos modos configurando este parámetro). Seguirá buscando la ruta para una versión mejor, luego se quejará si no puede encontrar una. ("No se encontró un controlador cromado adecuado" hubiera sido un mensaje mejor que "no se encontró un controlador cromado".)
Silas S. Brown
2

Antes de agregar el controlador cromado a su ruta, asegúrese de que sea la misma versión que su navegador.

De lo contrario, deberá hacer coincidir las versiones: actualizar / degradar su Chrome y actualizar / degradar su controlador web.

Recomiendo actualizar su versión de Chrome tanto como sea posible y que coincida con el controlador web.

Para actualizar Chrome:

  • En la esquina superior derecha, haz clic en los tres puntos.
  • haga clic en help->About Google Chrome
  • actualizar la versión y reiniciar Chrome

Luego descargue la versión compatible desde aquí: http://chromedriver.chromium.org/downloads .

Nota: ¡El nuevo controlador de cromo no siempre coincide con la versión más nueva de Chrome!

Ahora puedes agregarlo a la RUTA:

  1. cree una nueva carpeta en algún lugar de su computadora, donde colocará sus controladores web. Creé una carpeta nombrada webdriversenC:\Program Files

  2. Copie la ruta de la carpeta. En mi caso fueC:\Program Files\webdrivers

  3. haga clic derecho en this PC-> properties:

ingrese la descripción de la imagen aquí

  1. En el click derecho Advanced System settings
  2. Hacer clic Environment Variables
  3. En System variables, haga clic en pathy haga clicedit
  4. hacer clic new
  5. pegue la ruta que copió antes
  6. haga clic en Aceptar en todas las ventanas

¡Eso es! Usé pycharm y tuve que volver a abrirlo. Quizás sea lo mismo con otros IDEs o terminales.

Alon Gouldman
fuente
1

Podría intentar reiniciar la computadora si no funciona después de estar seguro de que PATH está configurado correctamente.

En mi caso en Windows 7, siempre recibí el error en WebDriverException: Mensaje: para chromedriver, gecodriver, IEDriverServer. Estoy bastante seguro de que tengo el camino correcto. Reinicie la computadora, todo el trabajo

aprendizajeConejito
fuente
0

En mi caso, este error desaparece cuando copio el archivo chromedriver a la carpeta c: \ Windows. Es porque el directorio de Windows está en la ruta por la cual la secuencia de comandos de Python verifica la disponibilidad del controlador cromado.

Hamid
fuente
0

Si está utilizando un intérprete remoto, también debe verificar si su RUTA ejecutable está definida. En mi caso, cambiar del intérprete Docker remoto al intérprete local resolvió el problema.

Rafał
fuente
0

Encontré el mismo problema que el tuyo. Estoy usando PyCharm para escribir programas, y creo que el problema radica en la configuración del entorno en PyCharm en lugar del sistema operativo. Resolví el problema yendo a la configuración del script y luego editando la RUTA en las variables de entorno manualmente. ¡Espero que esto te sea útil!

sia1998
fuente
otra opción es mover su controlador cromado directamente a / usr / local / bin, entonces no le molestará agregar una ruta
sia1998
0

Agregue el controlador web (chromedriver.exe o geckodriver.exe) aquí C: \ Windows . Esto funcionó en mi caso

Suguresh Soppimath
fuente
0

La mejor manera es quizás obtener el directorio actual y agregarle la dirección restante. Al igual que este código (Word en Windows. En Linux puede usar algo línea pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


fuente
0

Cuando descargué chromedriver.exe, simplemente lo moví a la carpeta PATH C: \ Windows \ System32 \ chromedriver.exe y tuve exactamente el mismo problema.

Para mí, la solución era simplemente cambiar la carpeta en PATH, así que la moví a la carpeta bin de Pycharm Community que también estaba en PATH. ex:

  • C: \ Windows \ System32 \ chromedriver.exe -> Me dio una excepción
  • C: \ Archivos de programa \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> funcionó bien
Denis Imamovic
fuente
0

Tuve este problema con Mac Mojave ejecutando Robot test framework y Chrome 77. Esto resolvió el problema. Felicitaciones a @Navarasu por señalarme el camino correcto.

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

A continuación, en el indicador de Python:

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

# ctrl+d to exit

Esto lleva al siguiente error:

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'
  • Ahora tengo el enlace de descarga más nuevo
    • Descarga y descomprime chromedriver donde quieras
    • Por ejemplo: ~/chromedriver/chromedriver

Abrir ~/.bash_profilecon editor y agregar:

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

Abrir nueva ventana de terminal, ta-da 🎉

sampoh
fuente
0

Tuve este problema en Webdriver 3.8.0 (Chrome 73.0.3683.103 y ChromeDriver 73.0.3683.68). El problema desapareció después de que lo hice.

pip install -U selenium

actualizar Webdriver a 3.14.1.

Silas S. Brown
fuente
0

La mejor manera segura es aquí:

Descargue y descomprima chromedriver y coloque 'chromedriver.exe' en C: \ Python27 \ Scripts y luego no necesita proporcionar la ruta del controlador, solo

driver= webdriver.Chrome()

Has terminado sin necesidad de agregar rutas ni nada

nirupam kapoor
fuente
0

Verifique la ruta de su controlador de Chrome, es posible que no lo obtenga desde allí. Simplemente copie y pegue la ubicación del controlador en el código.

ChandyShot
fuente
-3

(para usuarios de Mac) Tengo el mismo problema, pero lo resolví de esta manera simple: debe colocar su chromedriver.exe en la misma carpeta que el script ejecutado y, en Pyhton, escriba estas instrucciones:

importar os

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

walid_data
fuente
2
La solución que está proponiendo es exactamente la misma que la de otro usuario. Por favor, preste atención a otras respuestas antes de publicar.
Nikita Kniazev
¿No está @walid_data diciendo esto para señalar que podría ser un problema solo de Windows?
benc