如何在Cypress测试中遍历CSV文件的行数据?
解决Cypress读取CSV并遍历登录的问题
步骤1:解析当前格式的CSV字符串
你当前读取到的CSV字符串是用空格分隔各行的,先拆分出每一行数据,再提取用户名和密码:
const csvUploaded = 'cypress/fixtures/logins.csv' it('CSV test', () => { cy.readFile(csvUploaded, 'utf-8').then((txt) => { // 按空格拆分出每行数据 const rows = txt.split(' '); // 跳过表头,遍历所有用户数据 for (let i = 1; i < rows.length; i++) { const [username, password] = rows[i].split(','); if (username && password) { // 执行登录操作 cy.visit('/login'); // 替换为你的登录页URL cy.get('#username-input').type(username); // 替换为实际用户名输入框选择器 cy.get('#password-input').type(password); // 替换为实际密码输入框选择器 cy.get('#submit-login').click(); // 替换为实际登录按钮选择器 // 验证登录成功(示例:检查跳转至首页) cy.url().should('include', '/home'); // 退出登录,准备下一个用户测试 cy.get('#logout-btn').click(); // 替换为实际退出按钮选择器 } } }); });
步骤2:适配标准换行格式的CSV
如果你的原始CSV是标准每行一条数据(比如表头和用户各占一行),改用换行符拆分更合理:
const csvUploaded = 'cypress/fixtures/logins.csv' it('CSV test', () => { cy.readFile(csvUploaded, 'utf-8').then((txt) => { // 按换行拆分,兼容Windows/macOS的换行格式,同时过滤空行 const rows = txt.split(/\r?\n/).filter(row => row.trim() !== ''); // 遍历数据行(跳过第一行表头) for (let i = 1; i < rows.length; i++) { // 拆分字段并去除前后空格 const [username, password] = rows[i].split(',').map(item => item.trim()); // 执行登录流程 cy.visit('/login'); cy.get('#username-input').type(username); cy.get('#password-input').type(password); cy.get('#submit-login').click(); // 验证登录状态 cy.get('.user-avatar').should('be.visible'); // 退出登录 cy.get('#logout-btn').click(); } }); });
注意事项
- 务必将代码中的元素选择器(如
#username-input)替换为你项目中实际的选择器 - 如果CSV字段包含逗号,简单的
split(',')会失效,可使用cypress-csv插件来解析复杂CSV,安装后直接通过cy.fixture('logins.csv').as('users')获取结构化数据 - 每次登录后退出,避免会话残留影响后续测试
内容的提问来源于stack exchange,提问作者user9847788
相关产品推荐
相关产品推荐

