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

如何通过getAgGridData方法用innerText替代innerHTML获取数据?

解决Cypress getAgGridData返回带换行符的问题

有两种实用处理方式,可根据需求选择:

方式一:清洗返回数据中的换行符

直接在拿到getAgGridData的返回数据后,遍历每一行的字段,移除字符串里的\r\n或\n,再执行断言:

cy.get('@AG-Table')
  .should('be.visible')
  .getAgGridData()
  .then((data) => {
    // 移除所有换行符并清理首尾空格
    const cleanedData = data.map(row => {
      Object.entries(row).forEach(([key, value]) => {
        if (typeof value === 'string') {
          row[key] = value.replace(/\r?\n/g, '').trim();
        }
      });
      return row;
    });
    cy.agGridValidateRowsExactOrder(cleanedData, expectedTable);
  });

方式二:自定义命令获取innerText数据

如果需要长期复用,可封装自定义命令,直接基于单元格的innerText(页面实际显示文本)构建表格数据:

// 在cypress/support/commands.js中添加自定义命令
Cypress.Commands.add('getAgGridDataByInnerText', () => {
  return cy.get('@AG-Table').then(table => {
    // 获取表头文本
    const headers = Array.from(table[0].querySelectorAll('.ag-header-cell-text'))
      .map(el => el.innerText.trim());
    // 遍历行,构建每行数据
    const rows = Array.from(table[0].querySelectorAll('.ag-row'))
      .map(row => {
        const cells = Array.from(row.querySelectorAll('.ag-cell'));
        return headers.reduce((rowData, header, index) => {
          rowData[header] = cells[index].innerText.trim();
          return rowData;
        }, {});
      });
    return rows;
  });
});

之后用自定义命令替代原getAgGridData:

cy.get('@AG-Table')
  .should('be.visible')
  .getAgGridDataByInnerText()
  .then((data) => {
    cy.agGridValidateRowsExactOrder(data, expectedTable);
  });

内容的提问来源于stack exchange,提问作者Freya Losya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:16:00