如何在ubuntu 16.04上为python3 selenium安装firefoxdriver webdriver?

时间:2016-08-27 08:58:26

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

我在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()

我收到以下错误:

  

追踪(最近一次通话):           文件" ./ test.py",第19行,in               主要()           文件" ./ test.py",第11行,在main中               browser = webdriver.Firefox(firefox_profile = getProfile())           文件" / usr / lib / python3 / dist-packages / selenium / webdriver / firefox /webdriver.py",第77行, init       self.binary,timeout),           文件" /usr/lib/python3/dist-packages/selenium/webdriver/firefox/extension_connection.py",第47行, init       self.profile.add_extension()           文件" /usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py",第91行,在add_extension中       self._install_extension(扩展)           文件" /usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py",第251行,在_install_extension中       compressed_file = zipfile.ZipFile(插件,' r')          文件" /usr/lib/python3.5/zipfile.py",第1009行, init       self.fp = io.open(file,filemode)       FileNotFoundError:[Errno 2]没有这样的文件或目录:' / usr / lib /firefoxdriver/webdriver.xpi'

我在Ubuntu存储库中搜索了包名为firefoxdriver但没有存在。 我该如何解决这个问题?

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你可以升级到16.10(它是yakkety的),或者你可以从here下载deb(它有效 - 我试过了)。或者,您可以按照these说明手动安装(chromedriver,但对于Firefox,它是相同的)。

答案 2 :(得分: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驱动程序,但该文件名为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驱动程序并调整您的代码以使用它
    2. 如果您选择选项#1,那么只需找到降级到Firefox 46的方法。

      如果您希望您的代码与最新版本的Firefox一起使用,那么您选择选项#2,如何完成该操作的基本要点如下:

      1. 下载并解压缩驱动程序
      2. 确保您的操作系统可以在其systempath中找到该文件
      3. 修改您的代码以使用新的Marionette webdriver
      4. 具体的分步流程(对于ubuntu)可以在此stackoverflow回答中找到launch selenium from python on ubuntu

        selenium应该能够在完成之后正常生成firefox。