在Firefox中自动下载PDF

xyz*_*xyz 8 firefox selenium selenium-webdriver

我希望Firefox直接下载PDF文件而不是在浏览器中显示它们.我使用了以下设置

FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.dir", "c:\\tmp");
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
WebDriver driver = new FirefoxDriver(firefoxProfile);
// Its just a sample URL 
driver.get("http://www.energy.umich.edu/sites/default/files/pdf-sample.pdf");
Run Code Online (Sandbox Code Playgroud)

about:config页面上,我可以看到此设置也成功反映了响应类型application/pdf.

在此输入图像描述

当Webdriver启动Firefox时,我可以看到以下选项.

在此输入图像描述

它应该是"保存文件".

Firefox仍然在浏览器中显示PDF.我使用的是Firefox 29.0.1,偏好值是否已更改?

Yi *_*eng 12

你的截图显示Firefox会预览pdf文件对我没有意义,但你的Firefox仍会弹出"另存为"对话框.

无论如何,为了使Firefox将pdf文件保存到预定义文件夹作为默认行为,您可能需要尝试以下代码,其中设置pdfjs.disabled为true将阻止Firefox预览文件.

另外,请确保您没有安装任何第三方Firefox PDF查看插件.如果您的计算机上安装了Adobe Reader,则会将Acrobat设置为Firefox中的PDF查看器.同样地,我曾经在我的计算机上安装了Sumatra PDF Firefox插件,它会覆盖Firefox设置以预览PDF,无论它是什么about:config.

FirefoxProfile firefoxProfile = new FirefoxProfile();

firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.dir", "c:\\tmp");
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");

firefoxProfile.setPreference("pdfjs.disabled", true);

// Use this to disable Acrobat plugin for previewing PDFs in Firefox (if you have Adobe reader installed on your computer)
firefoxProfile.setPreference("plugin.scan.Acrobat", "99.0");
firefoxProfile.setPreference("plugin.scan.plid.all", false);

WebDriver driver = new FirefoxDriver(firefoxProfile);

// Its just a sample URL 
driver.get("http://www.energy.umich.edu/sites/default/files/pdf-sample.pdf");
Run Code Online (Sandbox Code Playgroud)

进一步阅读: