如何使用Selenium Java下载pdf文件?

时间:2018-07-06 21:08:10

标签: java selenium selenium-chromedriver bloburls

尝试使用Selenium Java下载pdf文件。我也尝试启用浏览器的内容设置,但是每当硒脚本打开浏览器(chrome / Mozilla)时,它将以默认设置打开,即在我的实际浏览器设置中禁用了“下载PDF文件而不是在Chrome中自动打开它们”已启用。 有没有办法将WebDriver功能(由于执行硒脚本而打开)设置为相同?

另一种方法是,我尝试为pdf URL形成输入流,但这是一个blob URL,看起来像“ blob:https://www.sitename.com/9d1f0664-9e64-4deb-bae2-1d3ac6fbed4c”。因此,它为我提供了 java.net.malformedurlexception未知协议Blob

的例外

我无法找出正确的方法来实现我的目标,即使用Java硒脚本下载pdf。

2 个答案:

答案 0 :(得分:1)

这是Chrome https://support.google.com/chrome/answer/6213030?hl=en中的一个已知问题。如果可行,您可以在此页面上管理自动打开PDF文件

chrome://settings/content/pdfDocuments

也可以通过Selenium在那里切换按钮,但是有点棘手。我将发布工作代码,该代码将进行切换:

driver.get("chrome://settings/content/pdfDocuments");
new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector("body/deep/#control"), 10));
driver.findElements(By.cssSelector("body/deep/#control")).get(10).click();
Thread.sleep(2000); // only to see the result

driver.get("https://www.anotherPage.com/");

答案 1 :(得分:1)

您可以将chrome功能设置为autodownlod pdf。

 HashMap<String,Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("plugins.always_open_pdf_externally", true);

 ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("prefs", chromePrefs);

希望对您有帮助