Selenium Python:指定时长内循环刷新页面并检测元素是否出现
解决方案
要实现指定时长内定期刷新页面并检测元素的需求,你需要自定义循环逻辑,结合元素检查、页面刷新和超时控制。以下是修改后的代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException, TimeoutException import time def wait_for_element_with_refresh(driver, total_wait_time, refresh_interval, locator): start_time = time.time() while time.time() - start_time < total_wait_time: try: # 尝试查找并验证元素可见性 element = driver.find_element(*locator) if element.is_displayed(): return element except NoSuchElementException: # 元素未找到,继续执行循环 pass # 等待指定间隔后刷新页面 time.sleep(refresh_interval) driver.refresh() # 超时后抛出异常,也可根据需求返回None raise TimeoutException(f"在{total_wait_time}秒内未找到目标元素") # 使用示例 autor = "目标作者名称" locator = (By.XPATH, f"//b[contains(text(), '{autor}')]") total_wait_time = 9000 # 总等待时长(秒) refresh_interval = 30 # 页面刷新间隔(秒) try: target_element = wait_for_element_with_refresh(driver, total_wait_time, refresh_interval, locator) print("成功找到目标元素") except TimeoutException: print("未找到目标元素,已超出等待时长")
关键说明
- 时长配置:
total_wait_time对应你需要的最长等待时长(原代码中的9000秒),refresh_interval控制每次刷新的间隔,可根据实际场景调整。 - 循环逻辑:每次循环先检查元素是否存在且可见,找到则立即返回;未找到则等待指定时间后刷新页面,继续检测。
- 异常处理:捕获
NoSuchElementException避免单次检查失败导致程序终止,超时后抛出明确的超时异常,便于后续处理。
内容的提问来源于stack exchange,提问作者Ion Popescu
相关产品推荐
相关产品推荐

