我的页面上有几个Results
面板,每个面板都有自己的删除按钮。
我编写了一个赛普拉斯测试来测试删除过程,该测试按预期工作,面板被删除:
cy.get('div[data-test="Results"]')
.first()
.within(() => {
cy.get('p[data-test="Contact ID"]').then($match => {
contactID = $match.html();
cy.get('button[data-test="Delete Contact"]')
.click()
.get('div[data-test="Delete Record Modal"]')
.should('be.visible')
.get('button[data-test="Confirm Deletion"]')
.click();
});
});
下一步,我试图检测是否删除了正确的面板。
如何遍历所有面板的所有<p />
,并确保它们中没有一个contactID
等于被删除的面板?
我尝试过:
cy.get('p[data-test="ContactID"]').then($match2 => {
expect($match2.text()).not.to.eq(contactID);
});
但是在$match2
中,我将所有联系人ID汇总在一起,例如:12345678
而不是1234
和5678
答案 0 :(得分:1)
您可以使用each
:
cy.get('p[data-test="ContactID"]').each(($match) => {
cy.wrap($match).invoke('text').should('not.eq', contactID)
})
invoke
调用主题上的函数,在这种情况下,为.text()
.should
对文本进行断言cy.wrap
而导致断言超时或超时(请参见retry-ability)