在哪里可以找到Selenium Python软件包所需的geckodriver?


30

我正在使用Ubuntu 16.04.1 LTS。执行python -V退货Python 2.7.12。我正在建立一个virtualenv,以便通过以下方式将Selenium软件包安装到其中:

pip install -upgrade selenium

但是在使用以下python脚本进行试运行时:

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

它导致此错误:

 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

由于geckodriver是可执行文件,因此我得出结论,应该通过安装selenium软件包来提供它,pip或者至少通过错误提示一些信息来说明我接下来需要做什么。显然不是,所以我进一步研究:我认为Ubuntu应该有一个提供geckodriver可执行文件的软件包,所以我过去一直apt-file search geckodriver在搜索它,但没有找到结果。

我在哪里可以得到这个geckodriver可执行文件?



为什么硒的pip install命令不能仅安装硒依赖的内容?
bgoodr '16

3
这是硒和壁虎驱动程序维护者的问题。我只能说您必须从PyPI之外的某个地方(在本例中为GitHub)获得geckodriver。
edwinksl

Answers:


44

查找适合您操作系统的最新版本

提取它,然后将geckodriver复制到/usr/local/bin-如果v0.11.1是最新版本,并且您使用的是64位linux,则可以执行以下操作:

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/

现在,您的试运行应该可以了。


2
同样的方法也适用于chromedriver。:)
Pratik Nagelia

1
chromedriver现在可以通过安装apt-get install -qqy chromedriver
Rakaim

如果这不起作用,请将gecko驱动程序复制到/usr/bin。这对我
有用

cp geckodriver /usr/local/bin/需要SUDO权限。所以,Sudo。
Anbuselvan Rocky

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.