【问题标题】:selenium/python downloading issuesselenium/python 下载问题
【发布时间】:2013-06-30 09:18:19
【问题描述】:

在尝试/放弃机械化后,我正在尝试使用 Selenium 和 python 来自动下载文件。我已经完成了我认为我应该用 selenium 做的所有事情,表格填写了他们应该做的事情,点击了按钮等等。但我的问题是没有下载。以下是我的代码的相关部分(包括 Firefox 配置文件):

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",True)
fp.set_preference("browser.download.dir","Users/user/Downloads")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/tsv")

browser = webdriver.Firefox(firefox_profile=fp)

... ...

elem=browser.find_element_by_class_name('data')
elem.send_keys(Keys.TAB)

elem.send_keys(Keys.TAB)

elem.send_keys(Keys.RETURN)

time.sleep(9.0)

我使用 sleep(9.0) 是因为我正在等待查看文件是否需要更多时间来下载。我可以看到选项卡后突出显示“提交”按钮,但之后似乎没有任何反应。完全迷失了。我已经用谷歌搜索了一千次,但似乎无法提出任何建议。

【问题讨论】:

  • 您可以使用 urllib 进行下载
  • 我现在正在尝试 this 的建议,但现在我收到一个属性错误:对象没有属性 'strip
  • 听起来像是来自其他地方
  • @Matt - 很长时间没有解决这个问题。也许你终于可以接受唯一的答案了。

标签: python selenium python-2.7 download


【解决方案1】:

一般来说,下载文件选择器是操作系统的一部分,而不是浏览器,所以你不能用 selenium 来控制它。我看到了两种解决方案:

1) 以不显示操作系统相关对话框的方式设置 firefox 配置文件设置。为此,您需要将您的个人资料更改为:

fp.set_preference("browser.download.manager.showWhenStarting",False)

关于此的链接:http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

2) 更好的解决方案是完全不使用 selenium 下载文件。阅读这篇优秀的文章:http://ardesco.lazerycode.com/testing/webdriver/2012/07/25/how-to-download-files-with-selenium-and-why-you-shouldnt.html 基本上这建议在 selenium 之外下载文件。

编辑:我更改了第二个选项中的链接,因为它已经死了。感谢您指出这一点。

【讨论】:

  • 1.我检查了解决方案 2 中给出的链接。我认为它适用于 Java 而不是 python。 2. 在到达这里之前,我遇到了第 1 点中给出的解决方案。我再次无法理解“下载”的实际作用。如何在带有 url、id 和 cookie 的代码中使用 wget。
  • @sangharsh - 确实,这篇文章是基于 Java 的,但我认为消息与编程语言无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多