You need to enable JavaScript to run this app. Protractor/TypeScript如何校验带动态时间戳的CSV下载文件及内容
优惠活动
大模型
产品
解决方案
定价
更多

Protractor/TypeScript如何校验带动态时间戳的CSV下载文件及内容

动态校验下载的时间戳命名CSV文件方案

问题场景

点击导出按钮后,文件会下载到Download文件夹,下载的文件名格式为abc.当前时间戳.csv。目前已实现点击按钮触发下载的自动化逻辑,但在验证文件是否下载成功时遇到问题:每次下载的文件时间戳均不相同,若在existsSync方法中硬编码文件名可以正常校验,但该实现方式不符合规范。需要将脚本改为动态逻辑,能够读取最新下载的文件,同时校验文件为.csv格式并验证其内容。

现有代码示例

未实现的动态逻辑草稿

browser.driver.wait(function(){ 
  return fs.existsSync(filename.timestamp.csv);
},3000).then(function(){
  console.log('File Exists!')
});

不符合规范的硬编码实现

browser.driver.wait(function(){ 
  return fs.existsSync("C:\\users\\download\\abc.2021-16-6_160045.csv");
},3000).then(function(){
  console.log('File Exists!')
});

实现思路

  • 先指定下载目录路径,读取该目录下的所有文件列表
  • 用正则匹配筛选出文件名符合abc.xxx.csv格式的文件
  • 将匹配到的文件按最后修改时间降序排序,取第一个即为最新下载的文件
  • 校验文件后缀为.csv,后续可扩展读取文件内容做正确性校验

最终实现代码

const downloadPath = "C:\\users\\download\\";
// 可根据实际时间戳格式调整正则匹配规则
const fileNameRegex = /^abc\.\d{4}-\d{1,2}-\d{1,2}_\d+\.csv$/;

browser.driver.wait(function() {
  // 读取下载目录下所有文件
  const files = fs.readdirSync(downloadPath);
  // 筛选匹配命名规则的文件
  const matchedFiles = files.filter(file => fileNameRegex.test(file))
    .map(file => ({
      name: file,
      mtime: fs.statSync(downloadPath + file).mtime.getTime()
    }))
    // 按修改时间倒序,最新的排在最前
    .sort((a, b) => b.mtime - a.mtime);
  
  if (matchedFiles.length > 0) {
    const latestFile = matchedFiles[0];
    // 此处可扩展新增读取文件内容的校验逻辑
    return latestFile.name.endsWith('.csv');
  }
  return false;
}, 3000).then(function() {
  console.log('最新CSV文件下载成功!');
});

内容的提问来源于stack exchange,提问作者Swapnil G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 03:36:09