1
resposta

[Bug] Ajuda com cypress

Bom dia!!!

Estou criando um teste automatizado em cypress, nele eu faço meu login e algumas vezes, não todas, eu sou redirecionado para outra página para aceitar o termo de uso do sistema.

Sendo assim, tenho que verificar se o botão para aceite do termo existe ou não na tela, se existir terei que clicar nele, senão poderei pular essa parte, porém estive tentando com diversos trechos de código e obtive o seguinte erro:

Timed out retrying after 4000ms: cy.find() failed because it requires a DOM element or document. The subject received was: > undefined

Alguém já viu sobre algum caso parecido?

Seguem trechos de códigos

// cy.contains('button', 'Sim, continuar acessando').then(() => {
//   cy.get('#aceitar').click()
// })

// cy.get('#aceitar').then(() => {
//   cy.get('#aceitar').click()
// })

//cy.get('#aceitar').should('be.visible').click()

// cy.get('#aceitar', { timeout: 10000 }).then($button => {
//   if ($button.length > 0)
//   {
//     cy.get('#aceitar').click()
//   } 
// })
1 resposta

Olá, Gabriel! Tudo bem?

O erro que você mencionou geralmente ocorre quando o Cypress tenta operar em um elemento que ainda não está disponível no DOM. Uma abordagem para lidar com isso é utilizar a função cy.get() com uma verificação condicional para garantir que o elemento existe antes de tentar interagir com ele, juntamente com o {force:true} sendo aplicado para o click().

Aqui está uma sugestão de código que pode ajudar a resolver o problema:

cy.get('body').then(($body) => {
  if ($body.find('#aceitar').length > 0) {
    cy.get('#aceitar').click({force:true});
  }
});

Neste exemplo, primeiro verificamos se o corpo da página contém o elemento #aceitar. Se o elemento estiver presente, então procedemos com o clique. Isso evita o erro de tentar interagir com um elemento indefinido.

Outra dica é garantir que a página tenha carregado completamente antes de fazer a verificação. Às vezes, especialmente em páginas que carregam conteúdo dinamicamente, pode ser útil adicionar uma espera explícita ou verificar outros elementos na página que confirmem que o carregamento foi concluído.

Espero que essa sugestão ajude a resolver o problema.

Boa sorte com os testes!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software