selenium / python下载问题

时间:2013-06-30 09:18:20

标签: python selenium python-2.7 download

我正在尝试使用Selenium和python在尝试/放弃机械化后自动执行文件下载。我已经做了我认为我应该用硒做的一切,表格填写了他们应该做什么,按钮点击等等。但我的问题是什么都没下载。以下是我的代码的相关部分(包括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),因为我只是在等待文件是否需要更多时间下载。我可以看到在TAB之后突出显示“提交”按钮,但之后似乎没有任何事情发生。完全迷失了。我用Google搜索了一千次,似乎无法想出任何东西。

1 个答案:

答案 0 :(得分:1)

一般来说,下载文件选择器是操作系统的一部分,而不是浏览器,因此您无法使用selenium控制它。我看到两个解决方案:

1)以不显示OS相关对话框的方式设置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/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/基本上这意味着要在selenium之外下载文件。