2

在尝试/放弃机械化后,我正在尝试使用 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) 因为我只是在等着看文件是否需要更多时间来下载。我可以看到选项卡后突出显示“提交”按钮,但之后似乎没有任何反应。完全迷失了。我已经用谷歌搜索了一千次,但似乎无法提出任何建议。

4

1 回答 1

2

一般来说,下载文件选择器是操作系统的一部分,而不是浏览器,所以你不能用 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 基本上这建议在硒之外下载文件。

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

于 2013-06-30T10:03:47.457 回答