Maison  >  Article  >  développement back-end  >  Pourquoi Selenium lance-t-il une exception StaleElementException lors du défilement des résultats de recherche Amazon ?

Pourquoi Selenium lance-t-il une exception StaleElementException lors du défilement des résultats de recherche Amazon ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-15 07:02:02341parcourir

Why Does Selenium Throw a StaleElementException When Scrolling Through Amazon Search Results?

StaleElementException de Selenium : parcours de pages Web en Python

Lors de l'itération dans les résultats de recherche Amazon à l'aide de Selenium WebDriver, certains utilisateurs rencontrent une StaleElementException le cinquième ou deuxième page. Cette erreur se produit lorsque Selenium tente d'interagir avec un élément qui a changé ou disparu du DOM (Document Object Model).

L'extrait de code fourni met en évidence la difficulté de faire défiler la page vers le bas pour localiser la barre de numéro de page, menant à l'exception StaleElementException sur la ligne "driver.execute_script". Le message "StaleElementReferenceException" indique que l'élément référencé (avec la classe "pagnCur") n'est plus valide.

Alors que l'approche originale visait à parcourir un nombre spécifique de pages, la solution fournie simplifie la tâche en continu en cliquant sur le bouton "Suivant" jusqu'à ce qu'il soit désactivé. Cette approche s'appuie sur WebDriverWait pour attendre que l'élément du bouton « Suivant » devienne cliquable. Si WebDriverWait expire (la valeur par défaut est de 10 secondes), la boucle est interrompue, en supposant qu'il n'y a plus de pages à parcourir.

Il est important de noter que "implicitly_wait(10)" attend qu'un élément soit présent dans le DOM jusqu'à 10 secondes, pas les 10 secondes complètes. Si l'élément est trouvé plus tôt, le délai "implicitly_wait" est terminé. Pour garantir des attentes fiables, il est recommandé d'utiliser des attentes explicites telles que "WebDriverWait" avec des localisateurs d'éléments spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn