使用赛普拉斯,如何测试不存在的元素?
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')
的额外检查只是确保一切按预期发生的另一种方法。有时这是有道理的,有时是矫枉过正。
测试现有元素就像
一样简单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')
的额外检查只是确保一切按预期发生的另一种方法。有时这是有道理的,有时是矫枉过正。