这是我的代码片段
cy.get('[data-testid="userRecords"]')
.each((record) => {
if (record.find('[data-testid="delete"]').is(":enabled"))
{
cy.wrap(record).find('[data-testid="delete"]').click()
if (someValue == 1)
{
cy.get('[data-testid="test"]').should("be.visible");
}
else
{
cy.get('[data-tstid="anotherTest"]').should("be.not.exist")
}
return false;
}
我在这里试图实现的目标是,如果输入外部
if
语句,那么我想打破 each
循环。
有人可以指导我为什么我无法退出
each
循环吗?
您可以切换到
.is(':not([disabled]'))
以获得更好的结果。
参见 :启用选择器
选择器与:enabled
略有不同。:not([disabled])
选择其布尔值 disabled 属性严格等于 false 的元素:enabled
如果我将其归结为这个测试示例
HTML
<table>
<tbody>
<tr data-testid="userRecords">
<td data-testid="delete"><button>Delete</button></td>
</tr>
<tr data-testid="userRecords">
<td data-testid="delete" disabled><button>Delete</button></td>
</tr>
<tr data-testid="userRecords">
<td data-testid="delete"><button>Delete</button></td>
</tr>
</tbody>
</table>
测试
cy.get('[data-testid="userRecords"]').each((record, index) => {
Cypress.log({ message: `Processing ${index}` })
console.log(index, ':enabled', record.find('[data-testid="delete"]').is(":enabled"))
console.log(index, ':not([disabled]', record.find('[data-testid="delete"]').is(':not([disabled]'))
if (record.find('[data-testid="delete"]').is(':not([disabled]'))
{
Cypress.log({ message: `Returning on ${index}` })
return false;
}
})
我在第二个元素上提前退出,跳过第三个元素。