Java-等待文件以部分文件名下载

时间:2019-07-08 19:21:11

标签: java selenium selenium-webdriver

我正在尝试使用流畅的等待方式来等待文件的下载。但是由于文件以不同的日期格式下载。我想使用fluentWait验证文件的“部分文件名”。例如:cancelled_07092019,cancelled_09_07_2019。所以这里的文件名'canceled_'保持不变

以下代码对于实际的文件名可以正常工作。

Downloaded_report= new File("DownloadPath");
FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);
        wait.pollingEvery(1, TimeUnit.SECONDS);
        wait.withTimeout(15, TimeUnit.SECONDS);
        wait.until(x -> downloaded_report.exists());

在这里,我要检查文件名的开头。我该怎么做呢? 在此先感谢

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了这个问题,但是可以检查部分名称的文件是否存在于给定目录中。

File dir = new File("DownloadPath");
String partialName = downloaded_report.split("_")[0].concat("_"); //get cancelled and add underscore
FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);
        wait.pollingEvery(1, TimeUnit.SECONDS);
        wait.withTimeout(15, TimeUnit.SECONDS);
        wait.until(x -> {
            File[] filesInDir = dir.listFiles();
            for (File fileInDir : filesInDir) {
                if (fileInDir.getName().startsWith(partialName)) {
                    return true;
                }
            }
            return false;
        });

在上面的代码中,我们列出了下载路径目录中的所有文件。然后,遍历每个文件,获取其名称,并检查它是否包含我们想要的部分名称。

如果目录中有多个报告,则可能是一个问题。然后,我建议您以某种DownloadPath挂钩从以cancelled_开头的文件中清除@Before