首页 > 解决方案 > Java - 等待文件以部分文件名下载

问题描述

我正在尝试使用流利的等待来等待文件下载。但由于文件以不同的日期格式下载。我想使用 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());

在这里,我想检查文件名的开头。我该怎么做呢?提前致谢

标签: javaseleniumselenium-webdriver

解决方案


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

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


推荐阅读