You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:35:36