1

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

另一种方法是,我尝试为我的 pdf URL 形成一个输入流,但它是一个类似于“blob:https ://www.sitename.com/9d1f0664-9e64-4deb-bae2-1d3ac6fbed4c ”的blob URL。所以它给了我一个java.net.malformedurlexception 未知协议 blob的异常

我无法找出正确的方法来获得使用 java selenium 脚本下载 pdf 的目标。

4

2 回答 2

2

这是 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/");
于 2018-07-07T06:46:37.503 回答
2

您可以将 chrome Capabilities 设置为 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);

driver = new ChromeDriver(options);

希望这对你有帮助

于 2018-07-07T07:14:20.630 回答