Как нажать x количество раз в Cypress - PullRequest
1 голос
/ 03 июля 2019

У меня на сайте есть список объектов, рядом с которыми есть кнопки «Добавить». При нажатии первой кнопки «Добавить» этот объект добавляется, и строка исчезает и заменяется следующей вниз. Имя объекта такое же. Я хочу .click () три раза, чтобы добавить первые три объекта в список перед сохранением. Как я могу это сделать?

Мне известно о .click (), чтобы щелкнуть один объект. Мне также известно, что .click ({множественный: true}), чтобы щелкнуть все объекты на странице. Однако я хочу, чтобы он перестал щелкать после третьего раза.

В настоящее время настроено многократное нажатие, чтобы добавить все объекты в список (что неверно):

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

Ответы [ 2 ]

1 голос
/ 03 июля 2019

это не так сложно и спрашивали несколько раз раньше. Прежде всего, multiple: true используется для нажатия нескольких элементов, например, для нажатия всех кнопок на странице. Чтобы стукнуть по кнопке, вы можете использовать это:

for(let n = 0; n < 10; n ++){
  cy.get('#FieldListDialog > div > table > tr > td > button.button.add-button')
    .click()
}
0 голосов
/ 03 июля 2019

Проблема с вашим селектором. Если у вас есть n кнопок, и вы хотите нажать на все из них, вам нужно сопоставить все кнопки, а не одну. Поэтому ищите селектор (например, класс, уникальный для вашей кнопки «Добавить»), который соответствует всем им. Затем вы можете использовать .each () для их итерации и выхода из цикла при достижении определенного индекса:

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