使用赛普拉斯,如何测试不存在的元素?

Using Cypress, how to test for an element not existing?

测试现有元素就像

一样简单
cy.get('.hello');

如何断言该元素不存在?

您可以轻松前往

cy
  .get('.hello')
  .should('not.exist');

对我来说效果不错。但是,您需要注意此类命令的时间安排。例如,如果您在页面加载后立即执行此命令,它可能会给您误报,因为该元素尚未加载,因此不存在于 DOM.

对我来说,最好的做法是对我非常确定已加载的内容或 .should('be.visible') 在另一个元素不存在时执行额外的 cy.get

例如,如果您有一个接收输入然后在提交输入后消失的模式,我会断言低于模式的页面的可见性,如下所示:

cy
  .get('.page-body');

cy
  .get('.modal-trigger')
  .click();

cy
  .get('.modal')
  .should('be.visible')
  .type('text')
  .get('.submit')
  .click();

cy
  .get('.page-body')
  .should('be.visible');

cy
  .get('.modal')
  .should('not.exist');

由于 Cypress 检查一个元素是否未被任何其他元素覆盖,cy.get('.page-body') 应该可以为您提供有关应用程序当前情况的很好参考。对 cy.get('.modal').should('not.exist') 的额外检查只是确保一切按预期发生的另一种方法。有时这是有道理的,有时是矫枉过正。