如何在Cypress测试中从筛选后的行的td元素中获取文本?
解决方案
1. 获取单一行的指定单元格文本(以第一行为例)
如果只需要筛选后第一行的第3个单元格文本,直接通过链式命令简化代码,避免嵌套then:
cy.get('#myTable tbody tr') .filter(':not(:contains("Corporate Approved"))') .first() // 选中筛选后的第一行 .find('td').eq(3) // 定位该行第3个td(注意:eq索引从0开始,需根据实际单元格位置确认索引) .invoke('text') // 直接获取文本内容 .then((cellText) => { cy.log(cellText); // 可在此处添加断言或其他业务逻辑 })
2. 遍历所有筛选行,批量获取指定单元格文本
如果需要处理所有符合条件的行,使用each循环遍历,代码更简洁:
cy.get('#myTable tbody tr') .filter(':not(:contains("Corporate Approved"))') .each(($row) => { // $row是jQuery对象,可直接调用find方法 const cellText = $row.find('td').eq(3).text(); cy.log(cellText); // 对每个单元格文本做后续处理 })
关于$rows[0].find('td').eq(3)不生效的原因
$rows是Cypress返回的jQuery对象,$rows[0]会取出原生DOM元素,而原生DOM没有find()方法。如果要继续使用该方式,需要将原生DOM转成jQuery对象:
.then(($rows) => { const cellText = $($rows[0]).find('td').eq(3).text(); cy.log(cellText); })
不过相比之下,前面两种链式命令的写法更符合Cypress的最佳实践,代码可读性更高。
内容的提问来源于stack exchange,提问作者vitaliy4us
相关产品推荐
相关产品推荐

