如何使用 selenium java 下载 pdf 文件?

How to download pdf files using selenium java?

正在尝试使用 selenium 下载 pdf 文件 java。我还尝试启用浏览器的内容设置,但每当 selenium 脚本打开浏览器 (chrome/Mozilla) 时,它都会以默认设置打开,即 "Download PDF files instead of automatically opening them in Chrome" 在我的实际浏览器设置启用时被禁用。 有没有办法设置 WebDriver 功能(作为 selenium 脚本执行的结果打开)?

另一种方式,我试图为我的 pdf URL 形成一个输入流,但它是一个看起来像 "blob:https://www.sitename.com/9d1f0664-9e64-4deb-bae2-1d3ac6fbed4c" 的 blob URL。所以它给了我一个例外 java.net.malformedurlexception unknown protocol blob

我无法找到使用 java selenium 脚本实现下载 pdf 的目标的正确方法。

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

chrome://settings/content/pdfDocuments

也可以通过 Selenium 在那里切换按钮,但有点棘手。我将 post 工作代码,它切换:

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/");

您可以将 chrome 功能设置为自动下载 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);

driver = new ChromeDriver(options);

希望对您有所帮助