等待项目加载(过时的元素引用错误)



我正在执行一个脚本,该脚本单击多个页面以检索数据。每次点击后,新页面显然必须加载,加载时间差异很大(大多是2-3秒,有时>20秒(。因此,我需要使代码灵活地等待执行,直到加载元素。我已经实现了下面的解决方案,但我仍然收到一个陈旧的元素引用错误,我不明白(因为代码不应该在加载完成之前退出 while 循环(。谁能解释为什么会发生这种情况/我能做些什么来解决?

提前抱歉,我无法与您共享可执行脚本。

error = 1 
if page_ref < Max_pagenum_1: 
while error == 1: 
try: 
link = browser.find_element_by_xpath('//li[contains(@class,"page-item") and contains(@class,"active")]/following-sibling::li/a').click()
error = 0
time.sleep(3)
except: 
error = 1
time.sleep(20)
else: 
print('finished' + Name) 

您可以使用等待语句。大致如下:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
error = 1 
if page_ref < Max_pagenum_1: 
while error == 1: 
try:
WebDriverWait(browser, 20).until(
EC.presence_of_element_located((By.XPATH, '//li[contains(@class,"page-item") and contains(@class,"active")]/following-sibling::li/a')))
link = browser.find_element_by_xpath('//li[contains(@class,"page-item") and contains(@class,"active")]/following-sibling::li/a').click()
error = 0
time.sleep(3)
except: 
error = 1
time.sleep(20)
else: 
print('finished' + Name) 

最新更新