使用 Selenium 导航 Amazon 结果
使用 Selenium 遍历 Amazon 上的搜索结果时,可能出现的常见错误是 StaleElementException。此错误表示由于页面更改或刷新,正在交互的元素不再附加到 DOM。
要克服此问题,而不是依靠复杂的逻辑滚动到特定元素,可以使用可以采取更简单的方法。通过在可用时反复单击“下一步”按钮,脚本可以在结果页面中移动而不会遇到错误。
此修订后的代码利用显式等待来确保按钮在单击之前可单击:
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
需要注意的是,implicitly_wait() 方法与其显式等待方法一样,不能保证完整的等待时间。相反,它表示驱动程序等待元素出现在 DOM 中的最长时间,在检测到该元素时突然结束等待。
以上是如何使用 Selenium 高效地浏览 Amazon 搜索结果并避免 StaleElementException?的详细内容。更多信息请关注PHP中文网其他相关文章!