我在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的任何帮助表示赞赏!
答案 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的方法。
如果您希望您的代码与最新版本的Firefox一起使用,那么您选择选项#2,如何完成该操作的基本要点如下:
具体的分步流程(对于ubuntu)可以在此stackoverflow回答中找到launch selenium from python on ubuntu
selenium应该能够在完成之后正常生成firefox。