Cypress如何获取mat-table中含指定data属性元素对应的行索引
解决方案
你的代码返回0的原因是直接对data-mat-icon-name='pinned'对应的mat-icon元素调用index(),返回的是该元素在自身同级兄弟节点中的索引,而非所在行的索引。
你不需要手动逐层调用parent(),使用closest()方法直接匹配最近的mat-row祖先元素即可,正确代码如下:
cy.get("mat-table") .find("[data-mat-icon-name='pinned']") // 向上查找最近的mat-row祖先元素 .closest("mat-row") // 此时index()返回的是当前mat-row在所有同级行中的索引 .invoke("index") .then(rowIndex => { cy.log(rowIndex); // 输出预期值1 })
说明
closest()比逐层调用parent()更稳妥,不用考虑mat-icon和mat-row之间是否有其他嵌套节点,只要是祖先层级的最近mat-row都能匹配到- 拿到对应行元素后调用
index(),会自动计算该元素在同级所有mat-row里的位置,索引从0开始计数,和你示例的行顺序匹配,即可得到正确结果。
内容的提问来源于stack exchange,提问作者Inês Gomes
相关产品推荐
相关产品推荐

