Javascript 使用对话框从python中的站点下载文件

Javascript 使用对话框从python中的站点下载文件,javascript,python,selenium,urllib2,mechanize,Javascript,Python,Selenium,Urllib2,Mechanize,我正在尝试自动化一个网站的测试,它有一个表格需要填写和下载excel表格。数据在HTTP请求中发布。由于它有这样的功能,我使用了urllib2来让url工作,但是有一个打开/保存对话框,它会弹出来下载工作表 所以我开始使用selenium,它可以处理这个特性,但是涉及到javascript函数,我无法将值传递给它 这就是我在datepicker使用calendarDateInput.js时面临的问题,它的一个函数如下 <td align="center"><script>

我正在尝试自动化一个网站的测试,它有一个表格需要填写和下载excel表格。数据在HTTP请求中发布。由于它有这样的功能,我使用了urllib2来让url工作,但是有一个打开/保存对话框,它会弹出来下载工作表

所以我开始使用selenium,它可以处理这个特性,但是涉及到javascript函数,我无法将值传递给它

这就是我在datepicker使用calendarDateInput.js时面临的问题,它的一个函数如下

 <td align="center"><script>DateInput('startDate', true, 'YYYY-MM-DD')</script> </td>
然后,因为它不起作用,我求助于使用javascript

browser.execute_script("document.getElementById('endDate_Year_ID').value = '2013'")
该值未填充,我被困在这里

在mechanize或urllib2中是否有其他方法来处理对话框以保存文件或任何其他模块,在这些模块中我可以用python处理javascript

我在一台linux机器上做这个测试,发送密钥不适用于任何站点


感谢您的帮助。感谢绕过对话框并自动下载文件,您可以在浏览器配置文件中设置此设置

如果使用Firefox,您可以尝试以下设置。确保设置/path/to/downloads和内容类型(应用程序/下载、应用程序/八位字节流、文本/csv等)

然后确保将该配置文件传递到浏览器实例:

mydriver = webdriver.Firefox(firefox_profile=fp)

请说得更具体些。请提供您正在使用的代码以及包含的网站链接。谢谢。@alecxe:我已经更新了我面对问题的代码problem@alecxe:我在linux上运行此程序,发送密钥不起作用。可能有问题吗?或者任何其他firefox设置正在禁用此功能?是否有其他功能来执行这些操作?谢谢您的回答,但我应该能够在开始下载之前填写表单。正在打开一个新的浏览器窗口,其中设置了这些首选项,我是否做错了什么?是的,出于某种原因,我有两个webdriver.Firefox()的实例。它应该是mydriver=webdriver.Firefox(Firefox\u profile=fp)
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)