Onde encontrar o geckodriver necessário ao pacote Selenium Python?

30

Estou usando o Ubuntu 16.04.1 LTS. Executando python -Vdevoluções Python 2.7.12. Estou construindo um virtualenv a partir disso para instalar o pacote Selenium nele via:

pip install -upgrade selenium

Mas, ao fazer uma avaliação, execute o seguinte script python:

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://seleniumhq.org/')

resulta este erro:

 Traceback (most recent call last):
   File "/home/myuser/bin/selenium-experiment.py", line 2, in <module>
     browser = webdriver.Firefox()
   File "/home/myuser/python_virtualenv/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 135, in __init__
     self.service.start()
   File "/home/myuser/python_virtualenv/local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 71, in start
     os.path.basename(self.path), self.start_error_message)
 selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

 Exception AttributeError: "'Service' object has no attribute 'process'" in <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x7f782c1caa50>> ignored

Como geckodriveré um executável, concluí que ele deve ser fornecido pela instalação do pacote selenium por meio de pipou pelo menos erro com alguma mensagem informando o que preciso fazer a seguir. Aparentemente não, então procurei mais: pensei que talvez o Ubuntu deveria ter um pacote que forneça o geckodriverexecutável, então eu costumava apt-file search geckodriverprocurá-lo e não encontrei resultados.

Onde obtenho esse geckodriverexecutável?

bgoodr
fonte
Obtenha em github.com/mozilla/geckodriver .
edwinksl
Por que o comando pip install para selênio não pode instalar apenas o que o selênio depende?
bgoodr
3
Essa é uma pergunta para os mantenedores de selênio e geckodriver. Tudo o que posso dizer é que você precisa obter o geckodriver de algum lugar (GitHub neste caso) que não seja o PyPI.
edwinksl

Respostas:

44

Encontre a versão mais recente do seu sistema operacional.

Extraia e copie o geckodriver para /usr/local/bin- então, se v0.11.1era a versão mais recente e você estava no Linux de 64 bits, faria o seguinte:

export GECKO_DRIVER_VERSION='v0.24.0'
wget https://github.com/mozilla/geckodriver/releases/download/$GECKO_DRIVER_VERSION/geckodriver-$GECKO_DRIVER_VERSION-linux64.tar.gz
tar -xvzf geckodriver-$GECKO_DRIVER_VERSION-linux64.tar.gz
rm geckodriver-$GECKO_DRIVER_VERSION-linux64.tar.gz
chmod +x geckodriver
cp geckodriver /usr/local/bin/

Agora sua execução de teste deve funcionar.

Pratik Nagelia
fonte
2
O mesmo método também se aplica ao chromedriver. :)
Pratik Nagelia
1
Agora o chromedriver pode ser instalado com apt-get install -qqy chromedriver.
Rakaim
Se isso não funcionar, copie o driver gecko para /usr/bin. Isso funcionou para mim
Prasanth Ganesan
cp geckodriver /usr/local/bin/precisa de permissão SUDO. Então Sudo.
Anbuselvan Rocky
1

Ubuntu 16.04+:

sudo apt-get install firefox-geckodriver
Krassowski
fonte