Python selenium,单击在循环中加载数据的按钮

Python selenium click a button that loads data in a loop

提问人:Nader Shehata 提问时间:5/15/2023 更新时间:5/15/2023 访问量:43

问:

我有一个页面,最后有一个“查看更多”或“加载更多”按钮,当您单击该按钮时,加载更多数据大约需要几秒钟。我使用以下带有 for 循环的代码来单击此按钮,直到加载所有数据:

counter = 0
while True:
    print(counter, end=":")
    try:
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        time.sleep(1)
        see_more_btn = driver.find_element(By.XPATH, '//button[@class="ia-e-button ia-e-button--primary ia-m-searchresults-btn-load"]')
        see_more_btn.click()
        counter += 1
    except Exception as e:
        print(e)
        break

但这给了我在运行不到 10 个循环后出现此错误:

消息:过时元素引用:找不到过时元素

所以我搜索了一下,发现我应该在 selenium 中使用显式等待,所以我创建了这段代码:

counter = 0
while True:
    print(counter, end=":")
    try:
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        see_more_btn = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//button[@class='ia-e-button ia-e-button--primary ia-m-searchresults-btn-load']")))
        see_more_btn.click()
        counter += 1
    except Exception as e:
        print(e)
        break

但我仍然收到同样的错误,但经过多次迭代 - 不是太多 -
注意:我发现当它给出此错误时,驱动程序会继续单击按钮,就好像它在休息前接受订单一样,并且没有足够的时间进行所有点击

python selenium-webdriver 网页抓取

评论

0赞 Ajeet Verma 5/15/2023
请在帖子中添加更多详细信息,例如 URL。stackoverflow.com/help/minimal-reproducible-example

答: 暂无答案