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
DDDoriginal
2024-11-29 09:39:11533parcourir

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

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:
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