当前位置: 首页>>技术教程>>正文


apt – 哪里可以找到 Selenium Python 包所需的 geckodriver?

,

问题描述

我使用的是 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 是一个可执行文件,我得出的结论是,它应该通过 pip 安装 selenium 包来提供,或者至少会出现错误,并显示一些说明我下一步需要执行的操作的消息。显然不是,所以我进一步挖掘:我认为也许Ubuntu应该有一个提供geckodriver可执行文件的包,所以我使用apt-file search geckodriver来搜索它,但没有找到结果。

从哪里可以获得这个 geckodriver 可执行文件?

最佳办法

找到适合您操作系统的 latest release

解压它,并将 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/

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

次佳办法

Ubuntu 16.04+:

sudo apt-get install firefox-geckodriver

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14067.html,未经允许,请勿转载。