Gdzie znaleźć geckodriver potrzebny w pakiecie Selenium Python?


30

Używam Ubuntu 16.04.1 LTS. Realizacja python -Vzwrotów Python 2.7.12. Buduję z tego virtualenv, aby zainstalować w nim pakiet Selenium poprzez:

pip install -upgrade selenium

Ale podczas testowania uruchom następujący skrypt Python:

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

powoduje ten błąd:

 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

Ponieważ geckodriverjest to plik wykonywalny, doszedłem do wniosku, że powinien on zostać zapewniony przez instalację pakietu selenu poprzez piplub przynajmniej błąd z jakimś komunikatem informującym o tym, co muszę zrobić dalej. Najwyraźniej nie, więc kopałem dalej: pomyślałem, że być może Ubuntu powinien mieć pakiet zapewniający geckodriverplik wykonywalny, więc szukałem apt-file search geckodrivergo i nie znalazłem żadnych wyników.

Skąd mogę uzyskać ten geckodriverplik wykonywalny?



Dlaczego komenda pip install dla selenu nie może po prostu zainstalować tego, co zależy od selenu?
bgoodr

3
To jest pytanie do opiekunów Selenium i geckodriver. Mogę tylko powiedzieć, że musisz skądś wziąć geckodriver (w tym przypadku GitHub) inny niż PyPI.
edwinksl,

Odpowiedzi:


44

Znajdź najnowszą wersję dla swojego systemu operacyjnego.

Wyodrębnij go i skopiuj geckodriver do /usr/local/bin- więc jeśli v0.11.1była najnowsza wersja, a byłeś na 64-bitowym systemie Linux, zrobiłbyś to:

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/

Teraz twój okres próbny powinien działać.


2
Ta sama metoda dotyczy również chromedrivera. :)
Pratik Nagelia,

1
chromedriver można teraz zainstalować za pomocą apt-get install -qqy chromedriver.
Rakaim

Jeśli to nie zadziała, skopiuj sterownik gecko do /usr/bin. To zadziałało dla mnie
Prasanth Ganesan

cp geckodriver /usr/local/bin/potrzebuje pozwolenia SUDO. Więc Sudo.
Anbuselvan Rocky

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.