Я написал код для чтения каждого li и деформировал его, чтобы получить каждую ссылку. И я попытался посетить каждую ссылку в цикле и проверить какой-то элемент, который отображается на каждой странице. Однако после загрузки новой страницы Cypress выдает ошибку DOM detach.
https://imgur.com/a/9Pmspkm
Я пытался зациклить и кликать по каждой ссылке разными способами, но мне не повезло, чтобы сделать это успешно.
Я попробовал это.
it('test', () => {
cy.visit('https://www.cypress.io/')
cy.get('li.header__NavItem-xi2ch0-6').each(($el, index, list) => {
cy.wrap($el).children().click()
})
})
И это.
it('test', () => {
cy.visit('https://www.cypress.io/')
cy.get('li.header__NavItem-xi2ch0-6').each(($el, index, list) => {
cy.wrap($el).children().and('have.attr', 'href').then((href) => {
cy.log(href)
cy.visit('https://www.cypress.io/' + href)
})
})
})
Однако Cypress выдает ошибку DOM detach.
CypressError: сбой cy.children (), поскольку этот элемент отсоединен от DOM.
...
Cypress требует, чтобы элементы были подключены в DOM для взаимодействия с ними.
Предыдущая команда, которая выполнялась, была:
cy.wrap ()
Этот элемент DOM, вероятно, отсоединился где-то между предыдущей и текущей командой.
Распространенные ситуации, почему это происходит:
- Ваша структура JS перерисована асинхронно
- Код вашего приложения отреагировал на срабатывание события и удалил элемент
Обычно вам нужно повторно запросить элемент или добавить «охранники», которые задерживают Cypress от запуска новых команд.