使用Selenium Java下载PDF在Chrome中不起作用

时间:2019-03-06 09:45:11

标签: java selenium pdf selenium-chromedriver

我编写了以下代码来禁用Chrome PDF查看器,以便在Chrome中打开链接时可以自动将PDF文件下载到C:\ downloads文件夹中。

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<>();
prefs.put("download.default_directory", "C:\\downloads");
prefs.put("download.prompt_for_download", false);
prefs.put("plugins.always_open_pdf_externally", true);
options.setExperimentalOption("prefs", prefs);
options.addArguments("--test-type");
options.addArguments("--disable-extensions");
driver = new ChromeDriver(options);

不幸的是,我相信PDF查看器未正确禁用。这是我打开该PDF网址时获得的代码的内容:

enter image description here 即使我启用了 下载PDF文件而不是在Chrome中自动打开它们 ,我仍然可以获得上述结果。

还有其他解决方案可以在Chrome中自动下载文件吗?

1 个答案:

答案 0 :(得分:1)

我通过加载现有的浏览器配置文件在Chrome中管理了自动PDF下载。也许您只需要一个没有PDF查看器的配置文件。

public class WebdriverSetup {   
    public static String chromedriverPath = "C:\\Users\\pburgr\\Desktop\\selenium-tests\\GCH_driver\\chromedriver.exe";
    public static String chromeProfilePath = "C:\\Users\\pburgr\\AppData\\Local\\Google\\Chrome\\User Data";    
    public static WebDriver driver; 
    public static WebDriver startChromeWithCustomProfile() {
        System.setProperty("webdriver.chrome.driver", chromedriverPath);
        ChromeOptions options = new ChromeOptions();
        options.addArguments("user-data-dir=" + chromeProfilePath);
        driver = new ChromeDriver(options);
        driver.manage().window().maximize();
        return driver;
    }
    public static void shutdownChrome() {
        driver.close();
        driver.quit();
    }
}