打印静音后禁用另存为对话框

时间:2018-03-14 18:00:06

标签: selenium-webdriver save-as

我试图绕过选择的打印机并使用下面给出的代码在Selenium中使用firefox配置文件保存为对话框。我想通过点击打印按钮来保存pdf文件而不选择打印机并保存为对话框。

我不想使用Robot或Action类或AutoIT。

FirefoxProfile profile = new FirefoxProfile();
FirefoxOptions options = new FirefoxOptions();

System.setProperty("webdriver.gecko.driver", "drivers\\geckodriver.exe");
String downloadPath = "C:/downloads";
profile.setPreference("print.always_print_silent", true);
profile.setPreference("browser.download.folderList",1);
profile.setPreference("browser.download.manager.showWhenStarting",false);
profile.setPreference("browser.download.dir",downloadPath);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
profile.setPreference("pdfjs.disabled", true);

WebDriver driver = new FirefoxDriver(options.setProfile(profile));
driver.get("google.com");

((JavascriptExecutor)driver).executeScript("window.print();");

这样,选择的打印机被禁用但仍然打开另存为窗口对话框。

有没有办法同时禁用两者,我们可以在不提示窗口对话框的情况下将文件保存在自定义位置?

1 个答案:

答案 0 :(得分:1)

Gecko驱动程序不使用配置文件首选项。 相反,您应该创建一个FireFoxOptions对象,并向其中添加您的首选项,然后将其传递给驱动程序。

FirefoxOptions options = new FirefoxOptions();
options.addPreference("browser.download.dir", DOWNLOAD_PATH);
options.addPreference("browser.download.folderList", 2);
options.addPreference("browser.download.manager.showWhenStarting", false);
options.addPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream;application/xlsx");
WebDriver driver = new FirefoxDriver(options);