问题
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:
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/");
回答2:
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
来源:https://stackoverflow.com/questions/51217622/how-to-download-pdf-files-using-selenium-java