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

时间:2018-06-01 00:12:07

标签: testing cypress

测试现有元素就像

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

如何断言此元素不存在?

1 个答案:

答案 0 :(得分:2)

你可以轻松地去

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

对我来说工作正常。但是,您需要注意这种命令的时间安排。例如,如果在页面加载后立即使用此命令,则可能会给出误报,因为该元素尚未加载,因此在DOM中不存在。

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

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

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');

由于赛普拉斯检查某个元素是否未被任何其他元素覆盖,cy.get('.page-body')应该会为您提供有关应用当前情况的非常好的参考。对cy.get('.modal').should('not.exist')的额外检查只是确保一切按预期发生的另一种方法。有时这是有道理的,有时它太过分了。