Cypress获取Excel文件工作表名返回空数组问题求助
问题原因
返回空数组的核心错误是SheetJS(xlsx)库API使用不当:workbook.SheetNames本身就是存储所有工作表名称的一维字符串数组,而xlsx.utils.sheet_to_json()的作用是将单个工作表的单元格内容转换为JSON结构,入参必须是工作表对象(即workbook.Sheets[指定表名]格式的取值),将字符串数组传入该方法会直接返回空值。
修复方法
修改plugins/index.js中task的对应逻辑,直接返回workbook.SheetNames即可,无需调用sheet_to_json做包装:
on('task', { checkExcelSheetContents(args){ if (fs.existsSync(args.filePath)) { const workbook = xlsx.readFile(args.filePath); // 直接返回工作表名数组 return workbook.SheetNames } else { throw new Error("File not found") } } })
避坑提示
当前测试代码中使用相对路径定位Excel文件,Cypress执行Node端task时默认工作目录为项目根目录,手写相对路径很容易出现文件定位失败问题,建议拼接绝对路径使用:
- 在plugins/index.js顶部引入path模块:
const path = require('path') - 路径拼接可借助Cypress配置中的
projectRoot参数,避免手动计算目录层级出错。
参考截图
- Cypress运行时返回空数组的执行结果:

- 目标Excel实际存在的工作表名:

内容的提问来源于stack exchange,提问作者Faith Berroya
相关产品推荐
相关产品推荐

