java - 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());
在这里,我想检查文件名的开头。我该怎么做呢?提前致谢
解决方案
我不确定我是否正确理解了这个问题,但您可以检查给定目录中是否存在具有部分名称的文件。
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
推荐阅读
- c++ - 使用带有 -ffreestanding 的 Clang-6.0 进行编译时,由于签名不匹配而导致对 main() 的未定义引用
- typescript - 用于 Tyescript 的 Visual Code 中的纱线工作区
- python - 将“stdout”重定向到多个滚动文本小部件?
- java - @LastModifiedDate 在本地按预期工作,但在代码部署到测试服务器后不会
- openthread - 有没有一种方法可以检索边界路由器下的节点和边缘列表?
- docker - 带有 Docker 和 NPM 的 Gitlab CI
- reactjs - React-Native Import 类问题
- sql-server - SQL Server:查找具有 NULL 的重复行
- mysql - 将查询从 mysql 转换为 php laravel?
- google-ads-api - HTML5 横幅,富媒体示例