#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;
}