2016-08-27 70 views
2

我在Ubuntu 16.04上安装了python3-selenium apt软件包。在安装时,得到了一个消息:如何在ubuntu 16.04上安装python3 selenium的firefoxdriver webdriver?

Suggested packages: 
chromedriver firefoxdriver 
The following NEW packages will be installed: 
python3-selenium 

当我尝试运行下面的Python代码,

#! /usr/bin/python3.5 
from selenium import webdriver 
import time 

def get_profile(): 
    profile = webdriver.FirefoxProfile() 
    profile.set_preference("browser.privatebrowsing.autostart", True) 
    return profile 

def main(): 
    browser = webdriver.Firefox(firefox_profile=getProfile()) 

    #browser shall call the URL 
    browser.get("http://www.google.com") 
    time.sleep(5) 
    browser.quit() 

if __name__ == "__main__": 
    main() 

我收到以下错误:

Traceback (most recent call last): File "./test.py", line 19, in main() File "./test.py", line 11, in main browser = webdriver.Firefox(firefox_profile=getProfile()) File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox /webdriver.py", line 77, in init self.binary, timeout), File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in init self.profile.add_extension() File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py", line 91, in add_extension self._install_extension(extension) File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py", line 251, in _install_extension compressed_file = zipfile.ZipFile(addon, 'r') File "/usr/lib/python3.5/zipfile.py", line 1009, in init self.fp = io.open(file, filemode) FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib /firefoxdriver/webdriver.xpi'

我并寻找包名Ubuntu存储库中的firefoxdriver,但不存在。 我该如何解决这个问题?

安装webdrivers的任何帮助表示赞赏!

回答

0

你可以升级到16.10(这是在yakkety),或者你可以从here下载deb(它的工作原理 - 我试过了)。或者,您可以按照these指示手动安装(chromedriver,但对于Firefox它是一样的)。

0

我不确定这是否能解决您遇到的问题,但您可以尝试一下。但首先,要回答您可以在哪里下载firefoxdriver的问题,我的答案是也许firefoxdriver不可用,因为该文件现在称为geckodriver,但它真的叫做Marionette Driver。它在这里描述:https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver,它在这里可用https://github.com/mozilla/geckodriver/releases

回答这个问题,我相信,但是我想尝试解决您遇到的问题。

我对你的问题的理解: 你试图通过selenium产生一个firefox实例,但它不工作。

我的假设,为什么它不工作: 也许你正在使用Firefox 47或更新版本。如果你正在寻找在哪里下载新的'firefoxdriver'(它叫做Marionette Driver,但是这个文件叫geckodriver),你必须直接从它的github发布页面下载文件:https://github.com/mozilla/geckodriver/releases(我建议下载v0 .9.0,因为v0.10.0没有为我工作)。

如果您使用的是Firefox 47或更新的版本,那么使用简单的browser = webdriver.Firefox()启动Firefox浏览器就行不通。这用于Firefox 46,我假设旧版本,但它不再起作用,因为Firefox Webdriver的支持现在已经被删除。您现在必须下载新的Marionette驱动程序,并稍微修改您的代码以使其适用于该新驱动程序。您可以在我上面提供的链接中了解有关Marionette的更多信息。

我提议 您可以将溶液:

  1. 下载和降级到Firefox 46

  • 下载新的Marionette驱动程序并调整您的代码以使用它
  • 如果您选择选项1,然后只需找到一个方法来降级到Firefox 46

    然而,如果你希望你的代码与最新的Firefox版本的工作,那么你选择的选项#2和基本如何实现这一要点如下:

    1. 下载并解压驱动
    2. 确保您的操作系统能够找到它的Systempath下文件
    3. 修改您的代码与新的木偶工作的webdriver

    具体循序渐进的过程(Ubuntu的)都可以在此找到计算器回答launch selenium from python on ubuntu

    硒应该能够完成这些动作后正常产卵Firefox浏览器。