我正在使用赛普拉斯测试来检查页面中的所有按钮是否可以单击。
我使用了以下代码行:
cy.get('button').click({ force: true }).should('have.attr', 'href')
并给出错误
CypressError:cy.click()只能在单个元素上调用。您的 主题包含5个元素。如果您想通过{:true} 依次单击每个元素。
之后,代码更改为:
cy.get('button').click({ multiple: true }).should('have.attr', 'href')
并出现另一个错误
CypressError:超时重试:cy.click()失败,因为这 元素不可见:
...
此元素 '' 不可见,因为它具有CSS属性:'display:none'
解决此问题,或使用{force:true}禁用错误检查。
有没有办法同时使用两个对象来解决问题?
答案 0 :(得分:1)
这应该可以工作(两种情况下我都没有要测试的情况,但是不会导致错误):
cy.get('button')
.click({ multiple: true, force: true })
.should('have.attr', 'href')
答案 1 :(得分:1)
这是一个通用的方法 -
cy.get('button').each(($btn) => {
if ($btn.hasClass('disabled')) {
// logic to deal with disabled button
}
else {
// click button or do whatever
cy.wrap($btn).should('have.attr', 'href').click();
}
})
each 将帮助您遍历每个按钮,无论计数如何。这使您不必担心强制点击元素(在本例中为按钮)。