"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Dia de DaysOfCode

Dia de DaysOfCode

Publicado em 31/10/2024
Navegar:662

Day of DaysOfCode

Ei! Já faz um tempo desde a última entrada.
Recentemente, tenho abordado um problema relacionado à perda de referências de elementos em um loop e finalmente encontrei uma solução que gostaria de compartilhar com todos vocês.

O que eu queria alcançar

  • Colete elementos de botão em uma página da web específica.
  • Clique em cada botão para navegar para outra página.
  • Depois de realizar determinadas ações na nova página, volte para a primeira página.
  • Repita as etapas 2 e 3 até que todos os botões tenham sido clicados.

Aqui está uma versão simplificada do código inicial:

const someElements = await page.$$("xpath/ .//foo[@name='hoge']");

for (let i=0; i 



Que erro encontrei

Após a iteração do loop forst, o script não conseguiu localizar os elementos do botão. Continuei recebendo o seguinte erro:
ProtocolError: Erro de protocolo (DOM.describeNode): Não é possível encontrar o contexto com o ID especificado em

Como eu resolvi isso

Resolvi esse problema declarando novamente a lista de elementos do botão dentro do loop.
Aqui está o código modificado:

const someElements1 = await page.$$("xpath/ .//foo[@name='hoge']");

for (let i=0; i 



Eu adicionei a linha de redeclaração porque presumi que a referência original de someElements estava se perdendo ao navegar para fora da página inicial. Após essa alteração o erro foi resolvido. No entanto, não tenho certeza se essa abordagem segue estritamente as melhores práticas de codificação.

Se você encontrar um problema com .click() em um loop ao navegar entre as páginas, considere declarar novamente o elemento dentro do próprio loop. Essa simples mudança pode economizar muito tempo na solução de problemas!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/koichiarai/day-23-of-100daysofcode-2opg?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3