each
Итерируйтесь по структуре массива (массивы или объекты со свойством length).
Синтаксис
.each(callbackFn)
Использование
Правильное использование
cy.get('ul>li').each(() => {...}) // Iterate through each 'li'
cy.getCookies().each(() => {...}) // Iterate through each cookie
Неправильное использование
cy.each(() => {...}) // Errors, cannot be chained off 'cy'
cy.location().each(() => {...}) // Errors, 'location' doesn't yield an array
Аргументы
callbackFn (Функция)
Передайте функцию, которая вызывается со следующими аргументами:
valueindexcollection
Возвращаемые значения
-
.each()возвращает тот же объект, который был получен от предыдущей команды.
Примеры
Элементы DOM
Итерируйтесь по массиву элементов DOM
cy.get('ul>li').each(($el, index, $list) => {
// $el is a wrapped jQuery element
if ($el.someMethod() === 'something') {
// wrap this element so we can
// use cypress commands on it
cy.wrap($el).click()
} else {
// do something else
}
})
Исходный массив всегда возвращается
Независимо от того, что возвращается в функции обратного вызова, .each() всегда возвращает исходный массив.
cy.get('li')
.should('have.length', 3)
.each(($li, index, $lis) => {
return 'something else'
})
.then(($lis) => {
expect($lis).to.have.length(3) // true
})
Обещания
Обещания ожидают выполнения
Если ваша функция обратного вызова возвращает Promise, она будет ожидать её выполнения, прежде чем перейти к следующему элементу в коллекции.
cy.wrap([1, 2, 3]).each((num, i, array) => {
return new Cypress.Promise((resolve) => {
setTimeout(() => {
resolve()
}, num * 100)
})
})
Примечания
Преждевременное возвращение
Преждевременно остановить each
Вы можете преждевременно остановить цикл .each() , вернув false в функции обратного вызова.
Правила
Требования
-
.each()требует привязки к предыдущей команде.
Утверждения
-
.each()выполнит только те утверждения, которые вы привязали один раз, и не будет повторять .
Таймауты
-
.each()может ожидать таймаут, ожидая выполнения обещанного значения.
Журнал команд
-
cy.each()не записывается в журнал команд
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/each