如何在Cypress中实现Excel表格数据读取?
Cypress 读取Excel表格数据实现方案
Cypress 本身没有内置读取Excel文件的能力,我们可以借助xlsx社区库完成需求,以下是可直接跑通的实现步骤:
步骤1:安装依赖库
在项目根目录执行安装命令:
npm install xlsx --save-dev
步骤2:封装Cypress自定义读取命令
打开cypress/support/e2e.js(Cypress 9及更早版本对应cypress/support/index.js),添加以下代码注册全局命令:
import * as XLSX from 'xlsx'; // 自定义读取Excel命令,入参为Excel文件的本地路径 Cypress.Commands.add('readExcel', (filePath) => { return cy.readFile(filePath, 'binary').then((binaryContent) => { // 解析Excel文件为工作簿对象 const workbook = XLSX.read(binaryContent, { type: 'binary' }); // 默认读取第一个工作表,可替换为你实际的工作表名,比如 workbook.Sheets['用户数据表'] const targetSheet = workbook.Sheets[workbook.SheetNames[0]]; // 将工作表内容转换为JSON格式返回,JSON的key对应Excel第一行的表头 return XLSX.utils.sheet_to_json(targetSheet); }); });
步骤3:测试用例示例
假设你存放姓名、地点的Excel文件路径为cypress/fixtures/user_info.xlsx,Excel第一行表头为姓名、地点,下面行是对应的数据。
在cypress/e2e目录下新建测试用例文件read_excel_test.cy.js,代码如下:
describe('Excel数据读取测试', () => { it('读取Excel中的姓名、地点字段', () => { cy.readExcel('cypress/fixtures/user_info.xlsx').then((excelData) => { // 打印所有读取到的表格数据,可在测试运行器的控制台查看 console.log('全部Excel数据:', excelData); // 遍历每一行数据使用 excelData.forEach((row, index) => { const userName = row['姓名']; const userLocation = row['地点']; console.log(`第${index + 1}行数据:姓名${userName},地点${userLocation}`); // 你可以在这里接自己的业务测试逻辑,比如将数据填入表单 // cy.get('input#username').type(userName) // cy.get('input#location').type(userLocation) }); }); }); });
注意事项
- Excel表头不要有特殊符号、前后空格,不然会导致JSON的key和你取值的字段名不匹配,返回undefined
- 如果需要读取多个工作表,可修改自定义命令中的工作表获取逻辑,按名称取对应工作表即可
- 若Excel文件存放在其他路径,替换
readExcel方法的入参为实际绝对/相对路径即可
内容的提问来源于stack exchange,提问作者Rajna Ks
相关产品推荐
相关产品推荐

