使用Python 迭代時出現StaleElementException
介紹
自動化執行任務時,這是必不可少的有效地處理頁面互動以避免異常。可能出現的常見問題是 StaleElementException,表示 Web 元素不再有效。
根本原因和解決方案
在給定的程式碼中,發生 StaleElementException因為在對元素執行操作之前頁面尚未完全載入。為了解決這個問題,可以使用 WebDriverWait。 WebDriverWait 允許指定明確等待條件,直到元素可用。
使用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
在此更新的程式碼中,WebDriverWait 與明確一起使用條件是等待「下一步」按鈕可按一下。這可以確保頁面已完全加載並且元素在繼續之前可用。
附加說明
以上是如何防止 Selenium 網頁抓取中的 StaleElementException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!