我正在尝试自动化测试网站,该网站有一个要填写的表单并下载excel表。数据发布在HTTP请求中。既然如此,我使用 urllib2 来获取网址,但有一个打开/保存对话框会弹出下载工作表。
所以我开始使用可以处理此功能的 selenium ,但是涉及到javascript函数,我无法将值传递给它。
这是我使用 calendarDateInput.js 时使用的日期选择器面临的问题,并使用它的函数
<td align="center"><script>DateInput('startDate', true, 'YYYY-MM-DD')</script> </td>
我需要通过selenium传递自己的约会并尝试过:
首先我尝试了
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'")
价值没有得到填充,我就被困在这里
在mechanize或urllib2中是否有任何其他方法来处理保存文件的对话框或我可以在python中处理javascript的任何其他模块
我在 linux 计算机上执行此测试而 send_keys 对任何网站都不起作用
感谢任何帮助。感谢
答案 0 :(得分:1)
要绕过对话框并自动下载文件,您可以在浏览器配置文件中设置此类设置。
如果使用Firefox,您可以尝试以下设置。确保设置/ path / to / downloads和Content-Type(应用程序/下载,应用程序/八位字节流,text / 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)