Cypress处理Div表格:验证每行首列文本前缀
解决Div表格批量行校验问题
要校验第40-45行首列文本的前缀,你可以通过筛选目标行元素,再用cy.each()遍历校验,具体代码如下:
// 筛选row-index在40到45之间的行 cy.get('div[row-index]').filter((index, el) => { const rowNum = parseInt(el.getAttribute('row-index'), 10); return rowNum >= 40 && rowNum <= 45; }) // 遍历每一行做校验 .each($row => { // 定位当前行的首列(你的原代码用eq(1),如果首列是第一个元素请改成eq(0)) cy.wrap($row).eq(1) .invoke('text') .then(text => { const productID = text.trim(); // 直接校验前缀是否在允许列表中 expect(['AA', 'BB', 'CC']).to.include(productID.slice(0, 2)); }); });
关键说明:
- 先用
cy.get('div[row-index]')获取所有带行索引的元素,再通过filter()精准筛选40-45行,避免定位错误。 cy.each()可以直接遍历筛选后的元素集合,不需要额外的cy.wrap包裹整个集合,只需要在遍历内部用cy.wrap($row)把当前行转为Cypress可操作对象。- 用
expect(...).to.include(...)替代原有的forEach判断,写法更简洁且符合Cypress的断言风格。
如果你的row-index属性值是连续的,也可以用更简洁的属性选择器写法,比如:
cy.get('div[row-index="40"], div[row-index="41"], div[row-index="42"], div[row-index="43"], div[row-index="44"], div[row-index="45"]') .each($row => { // 后续校验逻辑同上 });
但这种写法在行数范围大时不够灵活,推荐用filter的方式。
内容的提问来源于stack exchange,提问作者Ziya I. Erogul
相关产品推荐
相关产品推荐

