StaleElementException lors de l'itération avec Python
Introduction
Lors de l'automatisation des tâches de scraping Web, il est essentiel pour gérer efficacement les interactions entre les pages afin d'éviter les exceptions. Un problème courant qui peut survenir est l'exception StaleElementException, indiquant qu'un élément Web n'est plus valide.
Cause fondamentale et solution
Dans le code donné, l'exception StaleElementException se produit car la page n'est pas complètement chargée avant d'effectuer des opérations sur les éléments. Pour résoudre ce problème, WebDriverWait peut être utilisé. WebDriverWait permet de spécifier des conditions d'attente explicites jusqu'à ce qu'un élément soit disponible.
Code avec WebDriverWait :
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush') for page in range(1, last_page_number + 1): try: button = wait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@id="pagnNextString"]'))) button.click() except TimeoutException: break
Dans ce code mis à jour, un WebDriverWait est utilisé avec un explicite condition d'attendre que le bouton « Suivant » soit cliquable. Cela garantit que la page est complètement chargée et que les éléments sont disponibles avant de continuer.
Notes supplémentaires
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!