3

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.

1

2 Answers 2

3

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

Sign up to request clarification or add additional context in comments.

Comments

2

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.