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.
Voici une version simplifiée du code initial :
const someElements = await page.$$("xpath/ .//foo[@name='hoge']"); for (let i=0; iQuelle 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é surComment 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; iJ'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 !
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