2014-02-26 48 views
3

我正在嘗試自動測試網站,該網站具有要填寫的表單並下載Excel表單。數據發佈在HTTP請求中。既然如此,我用urllib2來得到網址的工作,但有一個打開/保存對話框彈出下載表。使用對話框從python網站下載文件

所以我開始使用selenium它可以處理這個功能,但是有javascript函數涉及到,我無法傳遞值給它。

這是問題的IM面臨枝條的日期選擇器使用calendarDateInput.js和它的功能是一樣

<td align="center"><script>DateInput('startDate', true, 'YYYY-MM-DD')</script> </td> 

我需要通過硒通過我自己的日期,並試圖此:

首先,我試圖與

driver.find_element_by_id("endDate_Year_ID").clear() 
driver.find_element_by_id("endDate_Year_ID").send_keys("2013") 

然後,因爲它不工作,我使出使用JavaScript

browser.execute_script("document.getElementById('endDate_Year_ID').value = '2013'") 

的價值是沒有得到填充和IM卡在這裏

是否有機械化或urllib2的任何其他方式來處理對話框,保存文件或任何其它模塊,我可以在Python

處理JavaScript

Im做一個的Linux機和send_keys在這個測試不工作的任何幫助表示讚賞任何網站

。謝謝

+0

請更具體一些。提供您使用的代碼以及包含網站的鏈接。謝謝。 – alecxe

+0

@alecxe:我已經更新了im面臨問題的代碼 – user3291718

+0

@alecxe:我在linux上運行這個,send_keys沒有工作。可以有一個問題嗎?或者其他任何禁用此功能的Firefox設置?是否有其他功能可以執行這些操作? – user3291718

回答

1

繞過對話框並自動下載文件,您可以在瀏覽器配置文件中設置這樣的設置。

如果使用Firefox,則可以嘗試以下設置。請務必將您的/路徑/到/下載和內容類型(應用程序/下載應用程序/八位字節流,文本/ CSV等)

fp = webdriver.FirefoxProfile() 
fp.set_preference("browser.download.manager.showWhenStarting",False) 
fp.set_preference("browser.download.folderList",2) 
fp.set_preference("browser.download.dir", '/path/to/downloads/') 
fp.set_preference("browser.download.downloadDir", '/path/to/downloads/') 
fp.set_preference("browser.download.defaultFolder", '/path/to/downloads/') 
fp.set_preference("browser.helperApps.neverAsk.openFile", "CONTENT-TYPE") 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","CONTENT-TYPE") 

然後確保該配置文件傳遞到您的實例的瀏覽器:

mydriver = webdriver.Firefox(firefox_profile=fp) 
+0

謝謝你的回答,但我應該能夠在我開始下載它之前填寫表格。 – user3291718

+0

有一個新的瀏覽器窗口打開這些偏好設置,我做錯了什麼? – user3291718

+0

由於某種原因,我有兩個webdriver.Firefox()實例。它應該只是mydriver = webdriver.Firefox(firefox_profile = fp) – chishaku