乐闻世界logo
搜索文章和话题

How to wait for element to disappear in cypress

9 个月前提问
6 个月前修改
浏览次数51

1个答案

1

在Cypress中,等待某个元素消失可以通过多种方式来实现。最常用的方法是利用.should()断言连同not.exist或者not.be.visible,来等待元素从DOM中消失或不再可见。以下是几种方法的示例:

使用 should('not.exist')

如果你希望等待一个元素从DOM中彻底消失,你可以这样做:

javascript
cy.get('.some-element').should('not.exist');

这会告诉Cypress一直等待,直到页面上不再存在带有.some-element类的元素。

使用 should('not.be.visible')

如果元素仍然存在于DOM中,但你希望它不可见(例如,通过CSS隐藏),可以使用:

javascript
cy.get('.some-element').should('not.be.visible');

这会告诉Cypress等待,直到.some-element不再对用户可见。

使用 wait 结合 should

在某些情况下,如果后端操作需要时间,并且这个操作会导致元素消失,你可能需要结合使用waitshould命令:

javascript
cy.wait('@yourApiCall'); cy.get('.some-element').should('not.exist');

这个例子中,cy.wait('@yourApiCall')会等待一个别名为yourApiCall的API调用完成。完成后,Cypress会继续等待.some-element元素消失。

注意事项

  • 确保你的选择器是具体且唯一的。如果选择器不唯一(例如,页面上有多个相同的元素),Cypress可能会找到其他的元素,而不是你想要它等待消失的那个。

  • 如果你的应用使用动画,那么可能需要增加一个超时时长,因为元素的消失可能不是立即发生的:

    javascript
    cy.get('.animated-element').should('not.be.visible', { timeout: 10000 });

    这会增加Cypress等待元素不可见的超时时长至10秒。

通过这些方法,你可以告诉Cypress等待一个元素消失,这是在自动化测试中常见的一个需求,特别是在测试具有异步行为的Web应用时。

2024年6月29日 12:07 回复

你的答案