【问题标题】: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);
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2017-08-26
      • 1970-01-01
      • 2018-11-13
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多