Où trouver le geckodriver nécessaire au package Selenium Python?

30

J'utilise Ubuntu 16.04.1 LTS. Exécution des python -Vretours Python 2.7.12. Je construis un virtualenv à partir de cela afin d'y installer le paquet Selenium via:

pip install -upgrade selenium

Mais lorsque vous effectuez un essai avec le script python suivant:

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

il en résulte cette erreur:

 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

Puisqu'il geckodrivers'agit d'un exécutable, j'ai conclu qu'il devrait être fourni par l'installation du package sélénium via pipou au moins une erreur avec un message indiquant ce que je dois faire ensuite. Apparemment non, alors j'ai creusé plus loin: je pensais que peut-être Ubuntu devrait avoir un paquet qui fournit l' geckodriverexécutable, donc j'ai l'habitude apt-file search geckodriverde le rechercher et je n'ai trouvé aucun résultat.

Où puis-je obtenir cet geckodriverexécutable?

bgoodr
la source
Obtenez-le sur github.com/mozilla/geckodriver .
edwinksl
Pourquoi la commande pip install pour le sélénium ne peut-elle pas installer tout ce dont le sélénium dépend?
bgoodr
3
C'est une question pour les responsables du sélénium et du geckodriver. Tout ce que je peux dire, c'est que vous devez obtenir un geckodriver ailleurs (GitHub dans ce cas) autre que PyPI.
edwinksl

Réponses:

44

Trouvez la dernière version de votre système d'exploitation.

Extrayez-le et copiez geckodriver sur /usr/local/bin- donc si v0.11.1c'était la version la plus récente et que vous étiez sur Linux 64 bits, vous feriez ceci:

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/

Votre essai devrait maintenant fonctionner.

Pratik Nagelia
la source
2
La même méthode s'applique également au chromedriver. :)
Pratik Nagelia
1
chromedriver peut maintenant être installé avec apt-get install -qqy chromedriver.
Rakaim
Si cela ne fonctionne pas, copiez le pilote gecko dans /usr/bin. Cela a fonctionné pour moi
Prasanth Ganesan
cp geckodriver /usr/local/bin/nécessite l'autorisation de SUDO. Alors Sudo.
Anbuselvan Rocky
1

Ubuntu 16.04+:

sudo apt-get install firefox-geckodriver
krassowski
la source