赛普拉斯遍历 table 断言两列
Cypress iterating through table assert two columns
我有一个简单的 table 例如:
<table>
<tr>
<td>name 1</td>
<td>name 2</td>
<tr>
<tr>
<td>name 3</td>
<td>name 4</td>
<tr>
</table>
对于赛普拉斯,我想验证 name 1 和 name 2 不存在于 table 中(但是仅当它们彼此相邻时)。如果name 1单独出现在任何td中,那么就可以了,所以只有当name 1和name 2 在 table 行中。
我尝试通过以下方式遍历 table:
verifyTable(child, parent) {
cy.get("table tr").each(($el, index, $list) => {
cy.get("tr").eq(index).find("td:nth(0)").should('not.contain',child);
cy.get("tr").eq(index).find("td:nth(1)").should('not.contain',parent);
})
}
这工作正常,但如果它在第一列中找到 child,它就会失败并且不会检查下一列。如果该元素不存在于第一列而仅存在于第二列,则相同,它会失败。
只有当 child 和 parent 彼此相邻时才会失败。我不确定如何连接这两个条件。
即使我使用 AND 进行 chaning,如果它找到第一个元素,它也会失败:
cy.get("tr").eq(index).should('not.contain',child).and('not.contain',parent);
检查单元格时可以用jQuery表达式代替,没找到不会失败。
然后测试组合 - 我认为我的逻辑是正确的,但如果我理解有误,你可能需要调整。
verifyTable(child, parent) {
cy.get("table tr").each(($tr, index, $list) => {
const childExists = $tr.find(`td:nth(0):contains(${child})`).length;
const parentExists = $tr.find(`td:nth(1):contains(${parent})`).length;
expect(!childExists || !parentExists).to.eq(true)
// or this is the same, but may be closer to your specified requirement
expect(!(childExists && parentExists)).to.eq(true)
})
}
我有一个简单的 table 例如:
<table>
<tr>
<td>name 1</td>
<td>name 2</td>
<tr>
<tr>
<td>name 3</td>
<td>name 4</td>
<tr>
</table>
对于赛普拉斯,我想验证 name 1 和 name 2 不存在于 table 中(但是仅当它们彼此相邻时)。如果name 1单独出现在任何td中,那么就可以了,所以只有当name 1和name 2 在 table 行中。
我尝试通过以下方式遍历 table:
verifyTable(child, parent) {
cy.get("table tr").each(($el, index, $list) => {
cy.get("tr").eq(index).find("td:nth(0)").should('not.contain',child);
cy.get("tr").eq(index).find("td:nth(1)").should('not.contain',parent);
})
}
这工作正常,但如果它在第一列中找到 child,它就会失败并且不会检查下一列。如果该元素不存在于第一列而仅存在于第二列,则相同,它会失败。
只有当 child 和 parent 彼此相邻时才会失败。我不确定如何连接这两个条件。
即使我使用 AND 进行 chaning,如果它找到第一个元素,它也会失败:
cy.get("tr").eq(index).should('not.contain',child).and('not.contain',parent);
检查单元格时可以用jQuery表达式代替,没找到不会失败。
然后测试组合 - 我认为我的逻辑是正确的,但如果我理解有误,你可能需要调整。
verifyTable(child, parent) {
cy.get("table tr").each(($tr, index, $list) => {
const childExists = $tr.find(`td:nth(0):contains(${child})`).length;
const parentExists = $tr.find(`td:nth(1):contains(${parent})`).length;
expect(!childExists || !parentExists).to.eq(true)
// or this is the same, but may be closer to your specified requirement
expect(!(childExists && parentExists)).to.eq(true)
})
}