简体   繁体   中英

How to download pdf files using selenium java?

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 ie "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.

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

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

driver = new ChromeDriver(options);

Hope this help you

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM