首页 >后端开发 >Python教程 >如何使用 Selenium 高效地浏览 Amazon 搜索结果并避免 StaleElementException?

如何使用 Selenium 高效地浏览 Amazon 搜索结果并避免 StaleElementException?

DDD
DDD原创
2024-11-29 09:39:11436浏览

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

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn