我的网站上有一个对象列表,所有对象旁边都有“添加”按钮。单击第一个“添加”按钮时,该对象即被添加,该行消失,并被下一个向下的行替代。对象名称是相同的。我想在保存之前单击.click()三次以在列表中添加前三个对象。我该怎么办?
我知道.click()可以单击单个对象。我也知道.click({multiple:true})单击页面上的所有对象。但是,我希望它在第三次之后停止点击。
当前设置为单击多次以添加列表中的所有对象(这是不正确的):
cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
.should('exist')
.click({ multiple: true });
答案 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