我正在编写一个程序,通过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")
我的一个观察是当窗口弹出窗口是这样的
选项“从现在开始自动执行此类文件”是可点击的(通过复选框)然后上面的代码工作完美,但是当相同的选项不可点击时(如下图所示)设置配置文件的代码失败。 在这种情况下,有人可以帮助我吗?
答案 0 :(得分:3)
以下是您的问题的答案:
使用新的FirefoxProfile
时,请使用set_preference
方法配置个人资料,以便点击Save
和Ok
并且不会{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);
如果这回答你的问题,请告诉我。