"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Día de los días del código

Día de los días del código

Publicado el 2024-10-31
Navegar:456

Day of DaysOfCode

¡Ey! Ha pasado un tiempo desde la última entrada.
Recientemente, he estado abordando un problema relacionado con la pérdida de referencias de elementos dentro de un bucle y finalmente encontré una solución que me gustaría compartir con todos ustedes.

Lo que quería lograr

  • Recopilar elementos de botones en una página web específica.
  • Haga clic en cada botón para navegar a otra página.
  • Después de realizar ciertas acciones en la nueva página, regrese a la primera página.
  • Repita los pasos 2 y 3 hasta haber hecho clic en todos los botones.

Aquí hay una versión simplificada del código inicial:

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

for (let i=0; i 



¿Qué error encontré?

Después de la primera iteración del bucle, el script no pudo localizar los elementos del botón. Seguí recibiendo el siguiente error:
ProtocolError: error de protocolo (DOM.describeNode): no se puede encontrar el contexto con la identificación especificada en

como lo resolví

Resolví este problema volviendo a declarar la lista de elementos del botón dentro del bucle.
Aquí está el código modificado:

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

for (let i=0; i 



Agregué una línea de nueva declaración porque supuse que la referencia original de algunosElementos se perdía al navegar fuera de la página inicial. Después de este cambio, el error se resolvió. Sin embargo, no estoy seguro de si este enfoque se ajusta estrictamente a las mejores prácticas de codificación.

Si encuentra un problema con .click() en un bucle al navegar entre páginas, considere volver a declarar el elemento dentro del bucle. ¡Este simple cambio podría ahorrarle mucho tiempo en la solución de problemas!

Declaración de liberación Este artículo se reproduce en: https://dev.to/koichiarai/day-23-of-100daysofcode-2opg?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3