You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:30:53