通过python中的Selenium Webdriver下载文件

时间:2017-06-03 09:20:16

标签: python selenium selenium-webdriver webdriver firefox-profile

我正在编写一个程序,通过python中的selenium webdriver实现Web交互的自动化。当我通过脚本点击“下载”按钮时,我在最后一步陷入困境,屏幕上出现一个窗口弹出窗口,默认选项为“打开方式”。我希望我的程序首先单击“保存文件”选项,然后单击“确定”。我使用以下代码来设置Firefox配置文件

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk',"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

我的一个观察是当窗口弹出窗口是这样的

enter image description here

选项“从现在开始自动执行此类文件”是可点击的(通过复选框)然后上面的代码工作完美,但是当相同的选项不可点击时(如下图所示)设置配置文件的代码失败。 在这种情况下,有人可以帮助我吗?

enter image description here

1 个答案:

答案 0 :(得分:3)

以下是您的问题的答案:

使用新的FirefoxProfile时,请使用set_preference方法配置个人资料,以便点击SaveOk并且不会{39} ; t在下载过程中被中断。您可以按如下方式设置配置:

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.dir",os.getcwd());
profile.set_preference("browser.download.folderList",2);
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/csv,application/excel,application/vnd.msexcel,application/vnd.ms-excel,text/anytext,text/comma-separated-values,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/octet-stream");
profile.set_preference("browser.download.manager.showWhenStarting",False);
profile.set_preference("browser.helperApps.neverAsk.openFile","application/csv,application/excel,application/vnd.msexcel,application/vnd.ms-excel,text/anytext,text/comma-separated-values,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/octet-stream");
profile.set_preference("browser.helperApps.alwaysAsk.force", False);
profile.set_preference("browser.download.manager.useWindow", False);
profile.set_preference("browser.download.manager.focusWhenStarting", False);
profile.set_preference("browser.download.manager.alertOnEXEOpen", False);
profile.set_preference("browser.download.manager.showAlertOnComplete", False);
profile.set_preference("browser.download.manager.closeWhenDone", True);
profile.set_preference("pdfjs.disabled", True);

如果这回答你的问题,请告诉我。