遍历元素

时间:2019-02-28 11:54:38

标签: cypress

我的页面上有几个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而不是12345678

1 个答案:

答案 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