Как сделать цикл, нажав на каждую ссылку и проверить один и тот же элемент на каждой странице? - PullRequest
1 голос
/ 08 июня 2019

Я написал код для чтения каждого 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 от запуска новых команд.

...