Maison > développement back-end > Tutoriel Python > Comment puis-je naviguer efficacement dans les résultats de recherche Amazon avec Selenium et éviter StaleElementException ?

Comment puis-je naviguer efficacement dans les résultats de recherche Amazon avec Selenium et éviter StaleElementException ?

DDD
Libérer: 2024-11-29 09:39:11
original
540 Les gens l'ont consulté

How Can I Efficiently Navigate Amazon Search Results with Selenium and Avoid StaleElementException?

Navigation dans les résultats Amazon avec Selenium

Lors de la navigation dans les résultats de recherche sur Amazon à l'aide de Selenium, une erreur courante qui peut survenir est StaleElementException. Cette erreur indique que l'élément avec lequel vous interagissez n'est plus attaché au DOM, soit en raison de changements de page, soit d'une actualisation.

Pour surmonter ce problème, plutôt que de s'appuyer sur une logique complexe pour faire défiler vers des éléments spécifiques, un une approche plus simple peut être adoptée. En cliquant de manière itérative sur le bouton « Suivant » lorsqu'il est disponible, le script peut parcourir les pages de résultats sans rencontrer d'erreurs.

Ce code révisé utilise une attente explicite pour garantir que le bouton est cliquable avant de cliquer dessus :

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()

driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush')

while True:
    try:
        wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a > span#pagnNextString'))).click()
    except TimeoutException:
        break
Copier après la connexion

Il est important de noter que la méthode implicitly_wait(), comme son homologue d'attente explicite, ne garantit pas un temps d'attente complet. Au lieu de cela, il représente le temps maximum pendant lequel le pilote attendra qu'un élément apparaisse dans le DOM, mettant fin brusquement à l'attente lorsque l'élément est détecté.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal