4

我正在编写一个程序来通过 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")

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

在此处输入图像描述

使用选项“从现在开始自动为这样的文件执行此操作”是可点击的(通过复选框),那么上面的代码可以完美运行,但是当相同的选项不可点击时(如下图所示),那么上面的代码用于设置配置文件失败。任何人都可以在这种情况下帮助我吗?

在此处输入图像描述

4

1 回答 1

6

当您使用新的FirefoxProfile时,请使用该set_preference方法以这样的方式配置配置文件,以便单击Save并且Ok它不会在下载过程中被中断。您可以按如下方式设置配置:

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);
于 2017-06-03T10:26:52.697 回答