是否可以使用两个对象:赛普拉斯测试中的“力”和“多个”?

时间:2019-04-18 02:20:39

标签: automation automated-tests cypress

我正在使用赛普拉斯测试来检查页面中的所有按钮是否可以单击。

我使用了以下代码行:

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}禁用错误检查。

     

https://on.cypress.io/element-cannot-be-interacted-with

有没有办法同时使用两个对象来解决问题?

2 个答案:

答案 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 将帮助您遍历每个按钮,无论计数如何。这使您不必担心强制点击元素(在本例中为按钮)。