How to download pdf files using selenium java?

2019-07-27 22:55发布

Trying to download pdf files using selenium java. I also tried enabling the content settings of the browser but whenever the selenium script opens the browser (chrome/Mozilla), it opens with the default setting i.e. "Download PDF files instead of automatically opening them in Chrome" as disabled while my actual browser setting is enabled. Is there a way to set WebDriver capabilities(which opens as a result of selenium script execution) for the same?

Another way, I tried to form an input stream to my pdf's URL, but it is a blob URL which looks something like "blob:https://www.sitename.com/9d1f0664-9e64-4deb-bae2-1d3ac6fbed4c". So it gives me an exception of java.net.malformedurlexception unknown protocol blob

I am unable to figure out the correct way to obtain my goal of downloading pdf with a java selenium script.

2条回答
迷人小祖宗
2楼-- · 2019-07-27 23:30

It is a known issue in Chrome https://support.google.com/chrome/answer/6213030?hl=en. if it would work, you could manage the automatically open the PDF file on this page

chrome://settings/content/pdfDocuments

It is also possible to toggle the button there via Selenium, but a little bit tricky. I'll post the working code, which toggles:

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/");
查看更多
Evening l夕情丶
3楼-- · 2019-07-27 23:30

You can set chrome Capabilities to 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);

Hope this help you

查看更多
登录 后发表回答