Автоматическая загрузка PDF в Firefox

Я хочу, чтобы 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");

On about:config страница я вижу, что этот параметр успешно отражается также тип ответа application/pdf.

enter image description here

когда Webdriver запускает Firefox, я вижу следующую опцию.

enter image description here

это должно быть "Сохранить файл".

все еще Firefox показывает PDF в браузере. Я используя Firefox 29.0.1, изменились ли значения предпочтений?

6 ответов


для меня не имеет смысла, что ваш скриншот показывает, что Firefox будет просматривать pdf файлы, но ваш Firefox все еще всплывает диалоговое окно "Сохранить как".

в любом случае, чтобы сделать Firefox сохранение pdf файлы в предопределенную папку в качестве поведения по умолчанию, вы можете попробовать следующий код, где setting pdfjs.disabled to true предотвратит предварительный просмотр файлов Firefox.

кроме того, убедитесь, что у вас нет сторонних плагинов для просмотра Firefox PDF. Если на вашем компьютере установлен Adobe Reader, затем он устанавливает Acrobat в качестве средства просмотра PDF в Firefox. Точно так же у меня было 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");

читайте далее:


это работает для меня:

    WebDriver driver;

    FirefoxProfile fxProfile = new FirefoxProfile();
    fxProfile.setPreference("browser.download.folderList", 2);
    fxProfile.setPreference("browser.download.manager.showWhenStarting", false);
    fxProfile.setPreference("browser.download.dir",System.getProperty("java.io.tmpdir"));
    fxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");

    //You miss this line
    fxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);

    driver = new FirefoxDriver(firefoxProfile);

попробуйте.

надеюсь, что помогает!


вы можете отключить плагин при установке предпочтений. Это работает для меня

profile = webdriver.FirefoxProfile()

profile.set_preference("browser.download.folderList",2)
profile.set_preference("browser.helperApps.alwaysAsk.force", False)
profile.set_preference("browser.download.manager.showWhenStarting",False)
profile.set_preference("browser.download.dir", os.getcwd())

//below line was missing in yours

profile.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
profile.set_preference("pdfjs.disabled", True)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")  
driver = webdriver.Firefox(firefox_profile=profile)

надеюсь, что это помогает.


для Firefox Quantum 57.0 64-бит, Selenium 3.8.1, работает следующее решение.

FirefoxProfile ffprofile = new FirefoxProfile();        

// Required if you want to download other than the default location
ffprofile.setPreference("browser.download.folderList", 2);
// Specify your own location
ffprofile.setPreference("browser.download.dir", "C:\TestAutomationDataSheets\Files_To_Download\");
ffprofile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
ffprofile.setPreference("pdfjs.enabledCache.state", false);

DesiredCapabilities ffcapabilities = DesiredCapabilities.firefox();
ffcapabilities.setCapability(FirefoxDriver.PROFILE, ffprofile);

WebDriver driver = new FirefoxDriver(ffcapabilities);

настройки, заданные @Yi Zeng, прекрасно, но это не работает. Как после открытия Firebfox brower предпочтения не применяются из-за одной ошибки в версии selenium. Поэтому, если вы столкнулись с той же проблемой, что и здесьhttps://github.com/seleniumhq/selenium/issues/3498 тогда вам нужно сделать работу вокруг, как это, чтобы применить настройки, установленные кодом:

    DesiredCapabilities dc = DesiredCapabilities.firefox();
    dc = DesiredCapabilities.firefox();
    dc.setCapability(FirefoxDriver.PROFILE, firefoxProfile);

для меня только эти двое работали.

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


firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
driver = new FirefoxDriver(firefoxProfile);