Selenium java chrome驱动程序,获取上次下载的名称

Selenium java chrome驱动程序,获取上次下载的名称,java,selenium,selenium-chromedriver,Java,Selenium,Selenium Chromedriver,问题是:我在线程中为几个案例运行selenium测试。在测试过程中,点击“下载”按钮。这个按钮调用一个Ajax,它生成一个PDF并提供给下载。它默认下载到“下载” 我需要将这些下载移动到特定的位置(每个测试都有一个),但我不知道文件的名称 在测试期间,我试图更改downlad目录,但似乎不可能 我已尝试打开“下载”选项卡(chrome://downloads/)并探索它,但它似乎不可能,它没有找到web元素 我曾尝试移动(从源文件复制和删除)las文件,但由于多个测试在线程中运行,这可能是一个问

问题是:我在线程中为几个案例运行selenium测试。在测试过程中,点击“下载”按钮。这个按钮调用一个Ajax,它生成一个PDF并提供给下载。它默认下载到“下载”

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

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

我已尝试打开“下载”选项卡(chrome://downloads/)并探索它,但它似乎不可能,它没有找到web元素

我曾尝试移动(从源文件复制和删除)las文件,但由于多个测试在线程中运行,这可能是一个问题

有什么想法吗


提前感谢

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

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);` 

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

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

文件文件=新文件(“./下载”)

boolean b=false;
如果(!file.exists()){
b=文件.mkdirs();
}
FileUtils.cleanDirectory(文件);
String downloadFolder=System.getProperty(“user.dir”)+“/downloads”;
if(browser.equalsIgnoreCase(“Chrome”)){
HashMap chromePref=新HashMap();
chromePref.put(“download.default_目录”,downloadFolder);
chromePref.put(“下载.提示下载”,“假”);
ChromeOptions选项=新的ChromeOptions();
选项。设置实验选项(“prefs”,chromePref);
驱动程序=新的色度驱动程序(可选);
}else if(browser.equalsIgnoreCase(“Firefox”)){
FirefoxProfile profile=新的FirefoxProfile();
profile.setPreference(“browser.download.dir”,downloadFolder);//文件夹
setPreference(“pdfjs.disabled”,true);//禁用内置查看器
profile.setPreference(“browser.download.folderList”,2);
setPreference(“browser.download.panel.show”,false);
profile.setPreference(“browser.helperApps.neverAsksaveToDisk”、“application/x-excel、application/x-excel、application/excel、application/x-excel、application/x-excel、application/vnd.ms excel、application/x-excel、application/x-msexcel”);
FirefoxOptions FirefoxOptions=新的FirefoxOptions();
firefoxOptions.setCapability(FirefoxDriver.PROFILE,PROFILE);
firefoxOptions.setCapability(FirefoxDriver.MARIONETTE,true);
firefoxOptions.setCapability(CapabilityType.ELEMENT\u滚动\u行为,0);
驱动程序=新的FirefoxDriver(firefoxOptions);
}

你好!,谢谢你的链接,但它没有起作用。我最后做的是为每个测试配置一个不同的下载路径
(String rutaDescarga=“C:\\Users\\XXX\\Downloads”+System.currentTimeMillis()+Math.random();)
,这样,每个测试用例都有自己的路径,复制文件时没有错误
        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);

    }