如何通过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
相关产品推荐
相关产品推荐

