2013-06-30 35 views
0

我試圖用Selenium和python在嘗試/放棄機械化後自動化文件下載。我已經完成了所有我認爲我應該用硒做的事情,表格填寫了他們應該做的事情,按鈕被點擊了,等等。但是我的問題沒有什麼是下載。這裏是我的代碼的相關部分(包括Firefox配置文件):selenium/python下載問題

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) 

我用的是睡眠(9.0),因爲我只是在等待各地看看該文件是否需要更多時間下載。我可以看到「提交」按鈕在製表符之後突出顯示,但在此之後似乎沒有任何事情發生。完全失去。我搜索了一千次,似乎無法提供任何東西。

+0

你可以使用urllib下載 – Serial

+0

我現在正在嘗試從[this](http://stackoverflow.com/questions/6919098/attributeerror-nonetype-object-has-no-attribute-strip-with -python-webcrawle)的建議,但現在我得到一個屬性錯誤:對象沒有任何屬性'strip – Matt

+0

,聽起來像是從其他東西 – Serial

回答

1

一般來說,下載文件選擇器是操作系統的一部分,而不是瀏覽器,所以你不能用硒來控制它。我看到兩個解決方案:

1)設置Firefox的配置文件設置,不顯示操作系統相關對話框。對於您需要更改您的個人資料到這一點:

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

有關此鏈接:http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

2)更好的解決方案是不與硒下載的文件都沒有。通讀這篇優秀的文章:http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/基本上這建議在硒之外下載文件。