配置设置不起作用,无法禁用geckodriver的下载对话框

时间:2018-12-21 23:24:28

标签: java selenium geckodriver

我想使用硒和geckodriver下载文件。默认情况下,浏览器显示一条消息,要求用户指定是打开文件还是保存文件。据我了解,没有办法通过硒来控制此对话框。关键是要防止对话框首先出现并直接保存文件。我找不到办法。

我发现了一些相关问题,可以通过使用硒在geckodriver中设置config选项来解决,如下所示:

profile.setPreference("browser.helperApps.neverAsk.openFile", "application/octet-stream");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");

我使用javax.activation.MimetypesFileTypeMap库手动验证了MIME类型是否正确。作为开发人员,我还尝试了可能想到的所有其他类型(text / csv,text / plain,application / vnd.ms-excel)。 然后,我通过在我的代码创建的浏览器实例中转到about:config来验证配置设置是否正确调整。 我在this question上尝试了所有代码,但是那也不起作用。我与问题之间的区别是1.我下载的是csv而不是pdf,并且2.我下载的版本不存在构造函数FirefoxDriver(FireFoxProfile)。问题问完后。我找不到文档来确保我正确使用了FirefoxOptions,但是我认为我正在考虑正确设置配置。他们只是看不到正常工作。我也尝试过使用

options.addPreference(...)

代替

profile.setPreference(...)

,没有骰子。 这是创建浏览器实例的所有相关代码。通过单击链接来初始化下载。

System.setProperty("filepath\\to\\geckodriver.exe");

//use this to turn off the insane amount of useless debug info
System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE, "true");
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "null");

FirefoxOptions options = new FirefoxOptions();
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);         
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.dir", "c:\\downloads");
profile.setPreference("browser.helperApps.neverAsk.openFile", "application/octet-stream");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
options.setProfile(profile);
b = new FirefoxDriver(options);

这导致正确设置了配置设置,但是当我单击链接下载文件时,显示下载对话框 still

0 个答案:

没有答案