如何在赛普拉斯中单击x次

时间:2019-07-03 08:30:23

标签: testing click cypress

我的网站上有一个对象列表,所有对象旁边都有“添加”按钮。单击第一个“添加”按钮时,该对象即被添加,该行消失,并被下一个向下的行替代。对象名称是相同的。我想在保存之前单击.click()三次以在列表中添加前三个对象。我该怎么办?

我知道.click()可以单击单个对象。我也知道.click({multiple:true})单击页面上的所有对象。但是,我希望它在第三次之后停止点击。

当前设置为单击多次以添加列表中的所有对象(这是不正确的):

    cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
       .should('exist')
       .click({ multiple: true });

4 个答案:

答案 0 :(得分:1)

并不难,之前几次问过。首先,multiple: true用于单击多个元素,例如单击页面上的所有按钮。要敲击按钮,您可以使用以下方法:

for(let n = 0; n < 10; n ++){
  cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
    .click()
}

答案 1 :(得分:0)

问题出在您的选择器上。如果您有n个按钮,并且要单击所有按钮,则需要匹配所有按钮,而不仅仅是单个按钮。因此,寻找一个与所有选择器都匹配的选择器(例如,“添加”按钮特有的类)。 然后,您可以使用.each()遍历它们,并在达到某个索引时跳出循环:

cy.get('#your_selector_to_your_add_buttons')
                .each(($el, $index) => {
                    if($index == 3){
                        return false;
                    }
                    cy.wrap($el).click()
                } )

答案 2 :(得分:0)

您只需要在单击后移动断言,然后说单击直到不存在

       .click({ multiple: true })
       .should('not.exist');```

答案 3 :(得分:0)

您可以使用lodash https://lodash.com/docs/4.17.15#times

Fragment