我正在使用 Cypress 检查弹出消息。我通常只有 1 个吐司,我可以捕获并比较没有问题,但是当我同时有多个吐司时,这不是重复,而是每个它们自己的消息,我的测试只捕获第一个并失败.
单个吐司示例:
Cypress.Commands.add('lookAtToast', (message) => {
cy.get('.messenger-message-inner').eq(0).should('contain.text', message);
});
任何人都可以帮助我使用 Cypress 12(最新)中的方法来查看所有 3 个祝酒词,并能够匹配其中任何一个,一次 1 个......以任何顺序。
前任。如果我有“First Toast”、“Second Toast”、“Third Toast”的祝酒消息
我希望能够有一个测试可以查看它们并匹配其中一个,但不一定是它看到的第一个。
预期得到 1 个且只有 1 个吐司来搭配这个。
https://docs.cypress.io/api/commands/each
Cypress.Commands.add('lookAtToast', (message) => {
cy.get('.messenger-message-inner').each((el) => {
cy.wrap(el).should('contain.text', message);
});
});
吐司的问题是他们在不同的时间来来去去,即使之间的差距很小。
使用
.each()
的问题是cy.get('.messenger-message-inner')
一看到第一个吐司就会继续前进。
但是,如果第二个、第三个等稍有延迟,他们将永远不会被抓到。
也许断言预期的祝酒次数,像这样
Cypress.Commands.add('lookAtToast', (messages) => { // array of messages
cy.get('.messenger-message-inner')
.should('have.length', 3)
.each((el, index) => {
cy.wrap(el).should('contain.text', messages[index])