Вам понадобится рекурсивная команда, реализация которой будет зависеть от вашего конкретного сценария. Единого решения, подходящего для всех, не существует, но в целом оно будет выглядеть примерно так:
function findElem ( targetSelector ) {
// first, we need to query a container (could be table, or a generic item
// container). The important thing is, this container must exist on every
// page you'll traverse.
cy.get('.someContainer').then( $container => {
// synchronously find the target element, however you want. In this
// example I use an attribute selector, but you can do whatever you
// want.
if ( $container.find(targetSelector).length ) {
return true;
} else {
return false;
}
}).then( found => {
if ( found ) {
return cy.log(`found elem "${targetSelector}"`);
} else {
// synchronously check if there's a next page/table
if ( Cypress.$('.nextPageButton').length ) {
// when know that there is a next page, click it using cypress
cy.get('.nextPageButton').click();
// here, assert that next page/table is loaded, possibly by
// asserting that current page/table is removed from DOM
// then, recurse
return findElem(targetSelector);
} else {
throw new Error(`Couldn't find elem "${targetSelector}" on any page`);
}
}
});
}
it('test', () => {
findElem(`[data-id="42"]`);
});
Суть решения заключается в использовании комбинации команд для запроса контейнера и синхронной проверки (с использованиемJQuery или что-то), чтобы найти фактический элемент. Подробнее на Условное тестирование .
Для конкретной реализации вы можете обратиться к более старому ответу , который я дал на аналогичный вопрос.