Автоматическая загрузка 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
.
когда Webdriver запускает Firefox, я вижу следующую опцию.
это должно быть "Сохранить файл".
все еще 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");
читайте далее:
- подобный вопрос я ответил раньше: настройки браузере для загрузки файла для файла PDF
- статья о плагине Сканирования в Firefox: сканирование plugin
- автоматически загружать PDF-файлы в Firefox с помощью Selenium WebDriver
это работает для меня:
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);