问题描述
例如,在执行一些操作之后,我要确保“ 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)