【问题标题】:How to install firefoxdriver webdriver for python3 selenium on ubuntu 16.04?如何在 ubuntu 16.04 上为 python3 selenium 安装 firefoxdriver webdriver?
【发布时间】:2017-01-03 21:29:00
【问题描述】:

我在 Ubuntu 16.04 上安装了 python3-selenium apt 包。安装时,收到一条消息:

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(最近一次调用最后一次): 文件“./test.py”,第 19 行,在 主要的() 文件“./test.py”,第 11 行,在 main 浏览器 = webdriver.Firefox(firefox_profile=getProfile()) init 中的文件“/usr/lib/python3/dist-packages/selenium/webdriver/firefox /webdriver.py”,第 77 行 self.binary,超时), init 中的文件“/usr/lib/python3/dist-packages/selenium/webdriver/firefox/extension_connection.py”,第 47 行 self.profile.add_extension() 文件“/usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py”,第 91 行,在 add_extension self._install_extension(扩展) _install_extension 中的文件“/usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py”,第 251 行 压缩文件 = zipfile.ZipFile(插件, 'r') init 中的文件“/usr/lib/python3.5/zipfile.py”,第 1009 行 self.fp = io.open(文件,文件模式) FileNotFoundError: [Errno 2] 没有这样的文件或目录:'/usr/lib /firefoxdriver/webdriver.xpi'

我确实在 Ubuntu 存储库中搜索了名为 firefoxdriver 的软件包,但不存在。 我该如何解决这个问题?

任何有关安装网络驱动程序的帮助表示赞赏!

【问题讨论】:

  • 请尝试在 $nano ~.bashrc 中导出 geckdriver 的路径,这会将驱动程序路径分配给 Profile。

标签: python python-3.x selenium selenium-webdriver python-3.5


【解决方案1】:

您缺少的包名为firefox-geckodriver。 您可以通过sudo apt-get install firefox-geckodriver 或从https://github.com/mozilla/geckodriver/releases 下载,将其放入您的$PATH(例如/usr/bin)并使其可执行。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我不确定这是否能解决您遇到的问题,但您可以试一试。但首先,要回答关于在哪里可以下载 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

      1. 下载新的 Marionette 驱动程序并调整您的代码以使用它

      如果您选择选项 #1,那么只需找到一种降级到 Firefox 46 的方法。

      但是,如果您希望您的代码与最新版本的 Firefox 一起工作,那么您选择选项 #2,如何实现的基本要点如下:

      1. 下载并解压驱动程序
      2. 确保您的操作系统可以在其系统路径中找到该文件
      3. 修改您的代码以使用新的 Marionette 网络驱动程序

      具体的分步流程(适用于 ubuntu)可以在这个 stackoverflow 答案launch selenium from python on ubuntu

      中找到

      一旦完成,selenium 应该能够正常生成 firefox。

      【讨论】:

        猜你喜欢
        • 2016-09-06
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 2020-03-14
        • 2016-08-24
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多