在赛普拉斯中,有没有办法检查一定数量的相同文本或链接实例?

问题描述

例如,在执行一些操作之后,我要确保“ foo”仅出现一次,或者仅出现一次,例如两次。我可以确定完全不存在'foo',但是检查实例数使我无所适从。

解决方法

比方说,文本位于li元素内,并且您想确保'foo'的出现次数不止一个。一种解决方案可能是:

cy.get('li').invoke('text')
  .then(($text) => {
    let count = ($text.match(/foo/g) || []).length;
    expect(count).to.be.at.least(1);
    // Or you could use:
    // cy.wrap(count).should('be.at.least',1);
  })
,

当您在DOM中查询元素时,您将获得当时找到的元素数组。 无论您是否故意期望一个数组,都是这种情况。 该查询的结果可以是0、1或许多元素。

因此,如果您随后验证此数组的长度,则将获得实例数。

cy.contains('foo').should('have.length',1);

将确保您仅获得定位策略所定位元素的1个实例。

,

我遇到了同样的问题,我发现这是一个更简单的场景:

cy.get('li').filter(':contains("Services")').should('have.length',2)

https://docs.cypress.io/api/commands/filter#Contains

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...