Selenium java chrome驱动程序,获取最新下载名称

时间:2017-03-16 11:43:48

标签: java selenium selenium-chromedriver

问题在于:我在线程中运行了多个案例的selenium测试。在测试期间按下按钮"下载"点击。此按钮调用生成PDF并供其下载的Ajax。它下载到"下载"默认情况下。

我需要将这些下载内容移动到特定位置(每个测试都有一个)并且我不知道该文件的名称。

我试图在测试期间更改downlad目录,但似乎不可能。

我试图打开"下载"选项卡(chrome:// downloads /)并探索它,但似乎不可能,它找不到网页元素

我试图移动(从原点复制和删除)las文件,但是在线程中运行severan测试时,可能会出现问题。

有什么想法吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

我最终做的是为每个测试配置不同的下载路径

String rutaDescarga ="C:\\Users\\XXX\\Downloads"+System.currentTimeMillis() +Math.random();
File creaRuta = new File(rutaDescarga);
if(!creaRuta.exists()){
    creaRuta.mkdirs();
}
downloadPath = rutaDescarga;    
chromePref.put("download.default_directory",rutaDescarga);
options.setExperimentalOptions("prefs", chromePref);` 

这样,每个测试用例都有自己的路径,复制文件时没有错误

答案 1 :(得分:0)

您可以指定下载位置。下面的代码可能会帮助您尝试

File file = new File(“ ./ downloads”);

        boolean b = false;

        if (!file.exists()) {

          b = file.mkdirs();
        }

        FileUtils.cleanDirectory(file);
        String downloadFolder = System.getProperty("user.dir")+"/downloads";

    if (browser.equalsIgnoreCase("Chrome")) {

        HashMap<String, Object> chromePref = new HashMap<>();
        chromePref.put("download.default_directory", downloadFolder);
        chromePref.put("download.prompt_for_download", "false");
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("prefs", chromePref);
        driver = new ChromeDriver(options);

    } else if (browser.equalsIgnoreCase("Firefox")) {

        FirefoxProfile profile = new FirefoxProfile();
        profile.setPreference("browser.download.dir",downloadFolder );  // folder
        profile.setPreference("pdfjs.disabled", true);  // disable the built-in viewer
        profile.setPreference("browser.download.folderList", 2);
        profile.setPreference("browser.download.panel.shown", false);
        profile.setPreference("browser.helperApps.neverAsksaveToDisk", "application/x-msexcel,application/excel,application/x-excel,application/excel,application/x-excel,application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel");

        FirefoxOptions firefoxOptions = new FirefoxOptions();
        firefoxOptions.setCapability(FirefoxDriver.PROFILE, profile);
        firefoxOptions.setCapability(FirefoxDriver.MARIONETTE, true);
        firefoxOptions.setCapability(CapabilityType.ELEMENT_SCROLL_BEHAVIOR, 0);

        driver = new FirefoxDriver(firefoxOptions);

    }