【问题标题】:Why am I unable to download a zip file with selenium?为什么我无法使用 selenium 下载 zip 文件?
【发布时间】:2017-09-18 07:42:44
【问题描述】:

我正在尝试使用 selenium 来尝试从 html 网页下载测试文件。这是我一直用作测试对象的完整 html 页面:

<!DOCTYPE html>
<html>
<head>
    <title>Testpage</title> 
</head>
<body>
    <div id="page">
    Example Download link: 
        <a href="testzip.zip">Download this testzip</a> 
    </div>
</body>
</html>

我把它放在当前工作目录中,连同一些示例zip 文件重命名为testzip.zip

我的 selenium 代码如下:

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.dir", "/tmp")
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False )
profile.set_preference("pdfjs.disabled", True )                                       profile.set_preference("browser.helperApps.neverAsk.saveToDisk","application/zip")
profile.set_preference("plugin.disable_full_page_plugin_for_types", "application/zip")

browser = webdriver.Firefox(profile)
browser.get('file:///home/path/to/html/testweb.html')
browser.find_element_by_xpath('//a[contains(text(), "Download this testzip")]').click()

但是,如果我运行测试(例如使用nosetest),浏览器正在打开,但之后什么也没有发生。没有错误消息,也没有下载,它似乎只是“挂起”。

知道如何解决这个问题吗?

【问题讨论】:

  • 可能是文件url的原因。使用普通的 http 服务器托管站点,然后进行测试。 python -m SimpleHTTPServer 和测试 http://localhost:8000/testweb.html
  • 是的,谢谢,现在可以了。但不幸的是,我并没有更接近解决实际问题。因为对于不同的非公开网页,我有一个类似的下载链接,在这里它不起作用......

标签: python html selenium


【解决方案1】:

您没有设置真正的 Web 服务器。您只有一个 html 页面,但没有提供静态文件的服务器。您至少需要先设置一个服务器。

但是如果您的问题只是与下载文件有关,您可以使用一些国际网站进行测试。它会起作用的。

【讨论】:

  • 事实上,我有一个不同网页的问题,想确保我的 selenium 代码有效。它适用于这种情况,可能适用于许多其他页面,但不适用于我实际要测试的页面(包括 zip 文件中生成的数据)。下载未开始...
  • @Alex 首先,确保您要测试的站点是真实且完整的站点。其次,在你的 html 页面中,文件的路径应该像/testzip.zip,但不是没有/。你用来下载的代码没有问题。
  • 我刚刚在浏览器上弹出一个带有真实网页的弹出窗口,询问我在哪里下载文件。我以为我已停用此弹出窗口...
  • @Alex 没有一个真实的例子,我不能说更多。您问题中给出的示例绝对不是网站,而只是html页面
  • 是的,我理解你。我必须自己想办法解决这个问题。不知道该怎么做,但我必须这样做。还是谢谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2016-07-29
  • 2013-01-18
  • 2011-02-21
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多