Cypress automation: несколько элементов cy.get в одной функции

#cypress

#cypress

Вопрос:

У меня есть функция:

 checkWebElemAndAssert(...elements) {
    for (const element of elements) {
        element.should('be.visible').click().should('be.checked');
    }
}
  

и я использую это в другой функции:

 checkRegisterValues = () => {
    let maleCheckBox = cy.get('input[value=Male]');
    let femaleCheckBox = cy.get('input[value=FeMale]');
    let cricketCheckBox = cy.get('#checkbox1');
    let registerElemList = [maleCheckBox, femaleCheckBox, cricketCheckBox];
    this.browserUtils.checkWebElemAndAssert(...registerElemList);
    return this;
}
  

Проблема в том, что когда я использую checkRegisterValues(), он использует для каждого действия последний элемент: cricketCheckBox. Есть какие-либо подсказки о том, что не так? я бы ожидал, что действие выполняется для каждого элемента, а не для последнего.

Ответ №1:

Вы пробовали передавать массив подобным образом?

     this.browserUtils.checkWebElemAndAssert(registerElemList);
  

Вы также можете распечатать

 checkWebElemAndAssert(...elements) {
   console.log(elements);
   for (const element of elements) {
      element.should('be.visible').click().should('be.checked');
  }
}
  

и посмотрите, что вы передаете в

Ответ №2:

хорошо, я прочитал еще немного и сделал это:

 checkWebElemAndAssert2(elements) {
    cy.get(elements).each(($list) => {
        cy.get($list).click({ multiple: true }).should('be.checked')
    })
}
  

В принципе, в элементах, когда я вызываю checkWebElemAndAssert2, я даю идентификатор списка. Кажется, работает, но не уверен, что соответствует стандарту.

 checkRegisterValues = () => {
    let myList = 'input[type=radio]';
    this.browserUtils.checkWebElemAndAssert2(myList);
    return this;
}