提问人:Nader Shehata 提问时间:5/15/2023 更新时间:5/15/2023 访问量:43
Python selenium,单击在循环中加载数据的按钮
Python selenium click a button that loads data in a loop
问:
我有一个页面,最后有一个“查看更多”或“加载更多”按钮,当您单击该按钮时,加载更多数据大约需要几秒钟。我使用以下带有 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
但我仍然收到同样的错误,但经过多次迭代 - 不是太多 -
注意:我发现当它给出此错误时,驱动程序会继续单击按钮,就好像它在休息前接受订单一样,并且没有足够的时间进行所有点击
答: 暂无答案
评论