【问题标题】:Download PDF file directly using chromedriver使用 chromedriver 直接下载 PDF 文件
【发布时间】:2017-04-06 23:39:42
【问题描述】:

我正在尝试使用 Selenium WebDriver 自动执行文件下载功能。我使用的是谷歌浏览器,要下载的文件类型是 PDF 格式。当 WebDriver 点击下载(或打印)链接时,浏览器会显示 pdf 文件的预览,而不是直接下载。如何让chrome驱动直接下载pdf文件? 我尝试了下面的代码,但没有运气

ChromeOptions options = new ChromeOptions();
Map<String,Object> preferences = new HashMap<>();
preferences.put("pdfjs.disabled", true);
options.setExperimentalOption("prefs", preferences);
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
WebDriver driver=new ChromeDriver(options);

我知道这个问题已经在 StackOverflow 上提出过,包括 this,但这些解决方案都不适合我。

我正在使用 - Google Chrome v54.0.2840.99、Chromedriver v2.25 和 Selenium v​​3.0.1

下载/打印链接的 HTML 如下所示

【问题讨论】:

  • 你能显示应用程序的 HTML 或 URL 吗?

标签: java pdf selenium-webdriver selenium-chromedriver


【解决方案1】:

这个问题可以通过在download/print元素中添加以下属性来解决

download=""
target="_blank"

这可以使用 javascript 来完成,如下所示

WebElement printLink=driver.findElements(By.linkText("Print")).get(0);
JavascriptExecutor js= (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])",printLink,"download","");
js.executeScript("arguments[0].setAttribute(arguments[1],arguments[2])",printLink,"target","_blank");

【讨论】:

    【解决方案2】:

    可以设置a元素的属性download,然后点击该元素。见以下代码:

    String script = "document.querySelector('td a[href*=\"/print/\"]').setAttribute('download','name-of-the-download-file-recommend-guid-or-timestamp.pdf');";
    ((JavascriptExecutor)driver).executeScript(script);
    driver.findElement(By.cssSelector("td a[href*='/print/']")).click();
    

    【讨论】:

    • 其实这个解决方案对我不起作用,但它让我知道了如何解决这个问题
    猜你喜欢
    • 1970-01-01
    • 2023-02-17
    • 2021-11-16
    • 2016-09-16
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多