Mensagem de erro: "O executável 'chromedriver' precisa estar disponível no caminho"

171

Estou usando selênio com python e baixei o chromedriver para o meu computador Windows neste site: http://chromedriver.storage.googleapis.com/index.html?path=2.15/

Depois de baixar o arquivo zip, descompactei o arquivo zip na minha pasta de downloads. Em seguida, coloquei o caminho para o binário executável (C: \ Users \ michael \ Downloads \ chromedriver_win32) na variável de ambiente "Path".

No entanto, quando executo o seguinte código:

  from selenium import webdriver

  driver = webdriver.Chrome()

... Continuo recebendo a seguinte mensagem de erro:

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

Mas - como explicado acima - o executável está (!) No caminho ... o que está acontecendo aqui?

stead_progress
fonte
19
Tente copiar chromedriver.exeno mesmo diretório do seu script Python.
Malik Brahimi
4
A instalação via Chocolatey o adicionará ao caminho choco install chromedriver,.
WhatIsHeDoing
para o usuário encontrou esse problema no pycharm, a reinicialização o resolverá #
Charles Chow
Eu concordo com a resposta do ImNt. Embora eu queira acrescentar que, para aqueles que usam o virtualenv, você deve executar o python no seu arquivo venv como administrador, usando o seguinte formato de exemplo: driver = webdriver.Chrome (r'C: / Users / michael / Downloads / chromedriver_win32 /chromedriver.exe ')
Pineda
@MalikBrahimi Eu estive pesquisando esta solução em todos os lugares e nenhuma delas funcionou até encontrar o seu comentário. Muito obrigado
user2720864 24/03

Respostas:

177

Você pode testar se ele realmente está no PATH, se abrir um cmd e digitar chromedriver(assumindo que o executável do seu chromedriver ainda esteja nomeado assim) e pressione Enter. Se Starting ChromeDriver 2.15.322448estiver aparecendo, o PATH está definido adequadamente e há algo errado.

Como alternativa, você pode usar um caminho direto para o chromedriver assim:

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

Então, no seu caso específico:

 driver = webdriver.Chrome("C:/Users/michael/Downloads/chromedriver_win32/chromedriver.exe")
lmNt
fonte
3
Obrigado pela resposta: "Iniciando o ChromeDriver 2.15.322448" apareceu. "Somente conexões locais são permitidas." também apareceu. ... Mas acho que está tudo bem? .... Uma coisa que eu queria saber é o seguinte: No site, havia apenas uma versão de 32 bits do chromedriver disponível ... mas isso deve funcionar bem com minhas janelas de 64 bits, não deveria?
steady_progress
@steady_progress Sim, está tudo bem. E isso funcionará com o Windows de 64 bits; Eu mesmo estou usando. Eu suspeito que talvez a versão selênio possa causar o problema? Qual você instalou? Você o instalou usando pip?
LmNt
Você tentou usar o caminho direto para o driver ao ligar para o driver da web, como mencionei na resposta? Falhou com o mesmo erro?
LmNt
4
Ao adicionar webdrivers ao seu PATH, não importa o sistema operacional, inclua apenas o diretório em que o webdriver está armazenado, não o executável. Exemplo: PATH = $ PATH: / caminho / para / webdriver / pasta, não PATH = $ PATH: / caminho / para / webdriver / chromedriver. Além disso, o uso de PATH é muito mais portátil do que passar o local para a chamada webdriver.Chrome (), pois sempre podemos assumir que o PATH está definido corretamente onde quer que o código seja executado, mas não podemos assumir que a estrutura de arquivos seja configurada de forma idêntica .
Aphid
2
tentou usar a mesma solução, mas obtendo este erro: WebDriverException: Mensagem: O executável 'chromedriver.exe' pode ter permissões incorretas. Consulte sites.google.com/a/chromium.org/chromedriver/home
Yogesh
150

Vejo as discussões ainda falarem sobre a maneira antiga de configurar o chromedriver baixando o binário e configurando o caminho manualmente.

Isso pode ser feito automaticamente usando o webdriver-manager

pip install webdriver-manager

Agora, o código acima na pergunta funcionará simplesmente com as alterações abaixo,

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

O mesmo pode ser usado para definir o Firefox, Edge e binários.

Navarasu
fonte
@Navarasu com todo o respeito, por que alguém seguiria algo de 3.6 quando a corrente é 3.7. Da próxima vez que seria bom para explicitamente dizer que é para 3.6 .... Graças
Azy Sir
5
isto é incrível como ele permanece até à data muito
Leslie Alldridge
1
A coisa boa sobre esta solução é que ela tem mais flexibilidade do que outras soluções baseadas na configuração de caminho específico, o que considero impraticável em termos de uso do script em várias máquinas.
IBRAHIM
14

A mesma situação com o pycharm community edition, portanto, como no cmd, você deve reiniciar seu ide para recarregar as variáveis ​​de caminho. Reinicie o seu ide e deve ficar bem.

Andrea Bisello
fonte
2
Obrigado. Eu tive o mesmo problema no Visual Studios. Apenas reiniciado IDE e funcionou :) Thanks
DollarAkshay
Trabalhou para mim também.
CARTOS 23/07/19
13

No Linux (Ubuntu ou Debian):

sudo apt install chromium-chromedriver

No macOS, instale https://brew.sh/ e faça

brew cask install chromedriver
Boris
fonte
Em seguida, use: driver = webdriver.Chrome ('/ usr / lib / navegador-de-cromo / chromedriver') ... sem alterar o $ PATH
alquimia
@alchemy você tem certeza de que precisa fazer isso? Pelo que me lembro, driver = webdriver.Chrome()funcionou bem para mim.
Boris
Oi Boris, sim, não sei por que ... mesmo depois de adicionar ao PATH, ele não funcionou sem isso. Tenho certeza de que configurar o caminho corretamente seria melhor, mas só preciso fazer uma coisa com o Chromedriver rapidamente
alquimia
9

Nós temos que adicionar a string do caminho, comece com a letra rantes da string, para a string bruta. Eu testei dessa maneira, e funciona.

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

Algumas informações / esclarecimentos adicionais para futuros leitores deste tópico, para evitar mexer com o env do PATH. variável no nível do Windows e reinicialização do sistema Windows: (cópia da minha resposta em https://stackoverflow.com/a/49851498/9083077 conforme aplicável ao Chrome):

(1) Faça o download do chromedriver (conforme descrito anteriormente neste tópico) e coloque o chromedriver.exe (descompactado) em X: \ Folder \ of \ your \ choice

(2) Exemplo de código 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) Pode levar cerca de 5 segundos para o código de amostra (na resposta mencionada) abrir o navegador Firefox para o URL especificado. (2) O console python mostraria o seguinte erro se ainda não houver um servidor executando no URL especificado ou exibindo uma página com o título que contém a string 'Django': afirme 'Django' no browser.title AssertionError

Snidhi Sofpro
fonte
3

Para Linux e OSX

Etapa 1: faça o download do 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

Etapa 2: adicione o chromedriver ao /usr/local/bin

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

Agora você deve poder executar

from selenium import webdriver

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

sem problemas

Giorgos Myrianthous
fonte
Foi claramente afirmado que ele está usando o Windows, isto é para Linux.
misantroop
1
@misantroop Atualizei minha resposta para deixar isso claro.
Giorgos Myrianthous
2

Ao descompactar o chromedriver, especifique um local exato para que você possa rastreá-lo mais tarde. Abaixo, você está obtendo o chromedriver correto para seu sistema operacional e descompactando-o em um local exato, que pode ser fornecido como argumento posteriormente no seu 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
fonte
3
Ou para /usr/local/bin/ instalar globalmente.
Jeppe
2

Se você estiver trabalhando com o framework de robôs RIDE. Depois, você pode baixar Chromedriver.exedo site oficial e manter esse arquivo .exe no C:\Python27\Scriptsdiretório Agora mencione esse caminho como sua variável de ambiente, por exemplo. C:\Python27\Scripts\chromedriver.exe.

Reinicie o computador e execute o mesmo caso de teste novamente. Você não receberá esse problema novamente.

Rahul Tiwari
fonte
2

De acordo com as instruções , você precisa incluir o caminho para o ChromeDriver ao instanciar o webdriver.

driver = webdriver.Chrome('/path/to/chromedriver')
AnnaSummerShine
fonte
Se você rolar essas instruções para a direita, haverá um comentário dizendo "Argumento opcional, se não especificado, o caminho de pesquisa". Mas pelo menos algumas versões do webdriver parecem verificar qualquer chromedriver que encontrarem no caminho e, se ele não estiver "feliz" com ele (versão errada etc.), ele não será usado (a menos que seja forçado a tentar de qualquer maneira definindo esse parâmetro). Ele continuará procurando o caminho para uma versão melhor e depois reclamará se não conseguir encontrar uma. ("Nenhum chromedriver adequado encontrado" teria sido uma mensagem melhor do que "nenhum chromedriver encontrado".)
Silas S. Brown
2

Antes de adicionar o chromedriver ao seu caminho, verifique se a mesma versão do seu navegador.

Caso contrário, você precisará corresponder às versões: atualize / faça o downgrade do seu chrome e atualize / faça o downgrade do seu webdriver.

Eu recomendo atualizar sua versão do Chrome o máximo possível e combinar o driver da web.

Para atualizar o chrome:

  • No canto superior direito, clique nos três pontos.
  • clique em help->About Google Chrome
  • atualize a versão e reinicie o chrome

Faça o download da versão compatível aqui: http://chromedriver.chromium.org/downloads .

Nota: o chromedriver mais novo nem sempre corresponde à versão mais recente do chrome!

Agora você pode adicioná-lo ao PATH:

  1. crie uma nova pasta em algum lugar do seu computador, onde você colocará seus drivers da web. Eu criei uma pasta chamada webdriversemC:\Program Files

  2. copie o caminho da pasta. No meu caso foiC:\Program Files\webdrivers

  3. clique com o botão direito em this PC-> properties:

insira a descrição da imagem aqui

  1. No botão direito Advanced System settings
  2. Clique Environment Variables
  3. Em System variables, clique empath e clique emedit
  4. clique new
  5. cole o caminho que você copiou antes
  6. clique em OK em todas as janelas

É isso aí! Eu usei pycharm e tive que reabri-lo. Talvez seja o mesmo com outros IDEs ou terminais.

Alon Gouldman
fonte
1

Poderia tentar reiniciar o computador se ele não funcionar depois de ter certeza de que PATH está definido corretamente.

No meu caso no Windows 7, sempre recebi o erro no WebDriverException: Mensagem: para chromedriver, gecodriver, IEDriverServer. Tenho certeza de que tenho o caminho correto. Reinicie o computador, todo o trabalho

learningBunny
fonte
0

No meu caso, esse erro desaparece quando copio o arquivo chromedriver para a pasta c: \ Windows. É porque o diretório windows está no caminho em que o script python verifica a disponibilidade do chromedriver.

Hamid
fonte
0

Se você estiver usando o intérprete remoto, também deverá verificar se o PATH executável está definido. No meu caso, mudar do intérprete remoto do Docker para o intérprete local resolveu o problema.

Rafał
fonte
0

Eu encontrei o mesmo problema que o seu. Estou usando o PyCharm para escrever programas e acho que o problema está na configuração do ambiente no PyCharm e não no SO. Resolvi o problema acessando a configuração de script e editando o PATH nas variáveis ​​de ambiente manualmente. Espero que você ache isto útil!

sia1998
fonte
outra opção é mover seu chromedriver diretamente para o diretório / usr / local / bin, então você não está incomodado com a adição de um caminho em tudo
sia1998
0

Adicione o driver da web (chromedriver.exe ou geckodriver.exe) aqui C: \ Windows . Isso funcionou no meu caso

Suguresh Soppimath
fonte
0

A melhor maneira é talvez obter o diretório atual e anexar o endereço restante a ele. Como este código (Word no Windows. No Linux, você pode usar algo em linha pwd): webdriveraddress = str(os.popen("cd").read().replace("\n", ''))+'\path\to\webdriver'


fonte
0

Quando baixei o chromedriver.exe, apenas o movi para a pasta PATH C: \ Windows \ System32 \ chromedriver.exe e tive exatamente o mesmo problema.

Para mim, a solução foi apenas alterar a pasta no PATH, então apenas a mudei para a pasta bin Pycharm Community, que também estava no PATH. ex:

  • C: \ Windows \ System32 \ chromedriver.exe -> me deu uma exceção
  • C: \ Arquivos de programas \ JetBrains \ PyCharm Community Edition 2019.1.3 \ bin \ chromedriver.exe -> funcionou bem
Denis Imamovic
fonte
0

Teve esse problema com o Mac Mojave executando a estrutura de teste do Robot e o Chrome 77. Isso resolveu o problema. Parabéns @Navarasu por me indicar o caminho certo.

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

Em seguida, no prompt do python:

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

# ctrl+d to exit

Isso leva ao seguinte erro:

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'
  • Agora eu tenho o mais novo link para download
    • Baixe e descompacte o chromedriver para onde quiser
    • Por exemplo: ~/chromedriver/chromedriver

Abra ~/.bash_profilecom o editor e adicione:

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

Abra a nova janela do terminal, ta-da 🎉

sampoh
fonte
0

Eu tive esse problema no Webdriver 3.8.0 (Chrome 73.0.3683.103 e ChromeDriver 73.0.3683.68). O problema desapareceu depois que eu fiz

pip install -U selenium

para atualizar o Webdriver para 3.14.1.

Silas S. Brown
fonte
0

A melhor maneira, com certeza, é aqui:

Faça o download e descompacte o chromedriver e coloque 'chromedriver.exe' em C: \ Python27 \ Scripts, e você não precisará fornecer o caminho do driver, apenas

driver= webdriver.Chrome()

Você não precisa adicionar caminhos nem nada

nirupam kapoor
fonte
0

Verifique o caminho do seu driver chrome, ele pode não ser obtido a partir daí. Basta copiar e colar o local do driver no código.

ChandyShot
fonte
-3

(para usuários de Mac) Eu tenho o mesmo problema, mas resolvi desta maneira simples: você deve colocar seu chromedriver.exe na mesma pasta do script executado e, em pyhton, escreva esta instrução:

importação os

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

walid_data
fonte
2
A solução que você está propondo é exatamente a mesma de outro usuário. Preste atenção a outras respostas antes de postar.
Nikita Kniazev 16/07/19
@Walid_data não está dizendo isso para indicar que pode ser um problema apenas do Windows?
benc