"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Jour des jours de code

Jour des jours de code

Publié le 2024-10-31
Parcourir:629

Day of DaysOfCode

Hé! Cela fait un moment depuis la dernière entrée.
Récemment, j'ai résolu un problème lié à la perte de références d'éléments dans une boucle et j'ai finalement trouvé une solution que j'aimerais partager avec vous tous.

Ce que je voulais réaliser

  • Collectez les éléments des boutons sur une page Web spécifique.
  • Cliquez sur chaque bouton pour accéder à une autre page.
  • Après avoir effectué certaines actions sur la nouvelle page, revenez à la première page.
  • Répétez les étapes 2 et 3 jusqu'à ce que tous les boutons aient été cliqués.

Voici une version simplifiée du code initial :

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

for (let i=0; i 



Quelle erreur j'ai rencontrée

Après la première itération de la boucle, le script n'a pas pu localiser les éléments du bouton. J'obtenais toujours l'erreur suivante :
ProtocolError : erreur de protocole (DOM.describeNode) : impossible de trouver le contexte avec l'identifiant spécifié sur

Comment je l'ai résolu

J'ai résolu ce problème en déclarant à nouveau la liste des éléments du bouton dans la boucle.
Voici le code modifié :

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

for (let i=0; i 



J'ai ajouté une ligne de re-déclaration parce que je supposais que la référence originale someElements se perdait en s'éloignant de la page initiale. Après ce changement, l'erreur a été résolue. Cependant, je ne suis pas sûr que cette approche adhère strictement aux meilleures pratiques de codage.

Si vous rencontrez un problème avec .click() dans une boucle lors de la navigation entre les pages, envisagez de re-déclarer l'élément dans la boucle elle-même. Ce simple changement pourrait vous faire gagner beaucoup de temps de dépannage !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/koichiarai/day-23-of-100daysofcode-2opg?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3