Я думаю, что основная проблема в том, что .each()
повторяет список найденных элементов, поэтому внутри функции each()
вы получаете только один элемент за раз, но внутренний код использует .get()
, как если бы elem
быломассив элементов.
Возможно, вам будет проще использовать .then(elems => {...})
.
. Я использую отображение массива, чтобы получить массив текстовых значений с использованием нативного textContent
(ref Node.textContent ) и оператор распространения для преобразования результата cy.get()
в массив, который работает с .map()
.
it('should...', () => {
...
cy.get('div[class="name"] > a > u').then(elems => {
const texts = [...elems].map(el => el.textContent.trim());
let i = 0;
if (texts[i] === 'My text') {
...
}
else {
...
}
});
Также if(expect(i).to.be.oneOf([8, 16, 24]))
, вероятно, не очень хорошая идея, потому что expect
имеет побочные эффекты.Я бы использовал простое логическое выражение, например if([8, 16, 24].includes(i))
и expect
внутри него.