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

How to test for an element not existing using Cypress?

8 个月前提问
6 个月前修改
浏览次数18

1个答案

1

在使用Cypress进行自动化测试时,确保某些元素不存在于页面上也是很重要的一部分。这可以帮助验证页面的正确性,尤其是在执行删除或隐藏操作后。以下是一些步骤和示例,说明如何使用Cypress来测试不存在的元素:

1. 使用.should('not.exist')

最直接的方法是使用.should('not.exist')断言来检查元素是否不存在。这个断言会等待Cypress的默认超时时间,如果在这段时间内没有找到该元素,测试就会通过。

示例代码: 假设我们有一个功能是删除一个列表项,我们可以这样来确认列表项被删除成功:

javascript
// 假设每个列表项都有一个特定的测试ID cy.get('[data-testid="item-123"]').within(() => { cy.get('.delete-button').click(); }); // 检查该列表项是否已经不存在 cy.get('[data-testid="item-123"]').should('not.exist');

2. 使用.not()

另一种方法是使用.not()函数配合选择器来检查元素不包含特定的条件。这通常用于检查元素没有某些CSS类或属性。

示例代码: 假设我们要确认一个按钮在操作后不再有active类:

javascript
cy.get('.button').click(); cy.get('.button').should('not.have.class', 'active');

3. 结合使用.find().should('not.exist')

如果需要在父元素内部检查子元素不存在,可以结合使用.find().should('not.exist')

示例代码: 假设我们需要测试一个下拉菜单点击后其选项被正确移除:

javascript
cy.get('.dropdown').click(); cy.get('.dropdown-menu').find('.option-5').should('not.exist');

4. 使用.and('not.have.descendants', 'selector')

这个方法可以用来确认一个元素没有任何符合特定选择器的后代元素。

示例代码: 测试一个容器元素不包含任何<li>标签的子项:

javascript
cy.get('.container').should('not.have.descendants', 'li');

总结

以上就是几种在Cypress中测试元素不存在的方法。在实际测试中,选择最合适的方法取决于具体的测试场景和需求。重要的是理解这些方法的不同,以及它们是如何帮助确保页面UI的正确性和功能的完整性。

2024年6月29日 12:07 回复

你的答案