【问题标题】:How to download pdf files using selenium java?如何使用 selenium java 下载 pdf 文件?
【发布时间】:2018-07-06 21:08:10
【问题描述】:
尝试使用 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 unknown protocol blob
我无法找到正确的方法来实现使用 java selenium 脚本下载 pdf 的目标。
【问题讨论】:
标签:
java
selenium
selenium-chromedriver
bloburls
【解决方案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/");
【解决方案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);
希望对你有帮助