我正在尝试自动化一个站点的测试,该站点具有要填写的表格并下载excel表格。数据已发布到HTTP请求中。由于它具有该功能,因此我使用urllib2来使url正常工作,但是弹出了一个“打开/保存”对话框以下载工作表。
因此,我开始使用可以处理此功能的selenium,但是其中包含javascript函数,因此无法将值传递给它。
这是使用datepicker的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'")
该值没有填充并且被卡在这里
机械化或urllib2中还有其他方法可以处理对话框以保存文件或我可以在python中处理javascript的任何其他模块
我在Linux机器上执行此测试,并且send_keys在任何站点上均不起作用
任何帮助表示赞赏。谢谢
要绕过对话框并自动下载文件,可以在浏览器配置文件中设置这样的设置。
如果使用Firefox,则可以尝试以下设置。确保设置/ path / to / downloads和Content-Type(应用程序/下载,应用程序/八位字节流,文本/ 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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句