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

Python Selenium:如何延迟检查has-message类避免误触发页面刷新?

解决Unifi Camera Selenium脚本误刷新问题

问题分析

当前脚本会在页面加载初期就检查.has-message类,但该类会短暂出现导致误刷新,需要延迟约1分钟后再执行该检查逻辑。

修改后的脚本

我们可以通过记录页面关键操作的时间点,确保只有在页面稳定运行1分钟后再检查错误提示,避免误触发刷新:

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep, time

driver = webdriver.Chrome("**%path%**/chromedriver.exe")
script_active = True
page_stable_time = time()  # 记录页面进入稳定状态的时间

driver.get("https://%url%/login")
driver.maximize_window() # 最大化窗口

while script_active:
    if driver.find_elements(By.CSS_SELECTOR, '#enhanced-protection-message'):
        driver.find_element(By.ID, "details-button").click()
        driver.find_element(By.ID, "proceed-link").click()
        print("SUCCESS : 绕过安全验证")
        sleep(5)
        page_stable_time = time()  # 操作完成后重置稳定时间
    if driver.find_elements("name", 'username'):
        driver.find_element("name", "username").send_keys("%username%")
        driver.find_element("name", "password").send_keys("%password%")
        driver.find_element(By.CSS_SELECTOR, "input[type='submit']").click()
        print("SUCCESS : 登录成功")
        sleep(3)
        page_stable_time = time()  # 登录后重置稳定时间
    if driver.find_elements(By.CLASS_NAME, 'mainSubView--cameras'):
        driver.find_element(By.CLASS_NAME, "ubnt-icon--live-view").click()
        print("SUCCESS : 切换到实时视图")
        sleep(3)
        page_stable_time = time()  # 切换视图后重置稳定时间
    if driver.find_elements(By.CLASS_NAME, 'ubnt-icon--fullscreen'):
        try:
            driver.find_element(By.CLASS_NAME, "ubnt-icon--fullscreen").click()
            sleep(10)
            print("SUCCESS : 进入全屏实时视图")
            page_stable_time = time()  # 全屏后重置稳定时间
        except:
            print("STATUS : 已处于实时视图")
    # 仅当页面稳定超过1分钟且存在错误提示时,才执行刷新
    if (time() - page_stable_time) >= 60 and driver.find_elements(By.CLASS_NAME, 'has-message'):
        print("ACTION : 检测到持续错误,刷新页面")
        driver.refresh()
        page_stable_time = time()  # 刷新后重置稳定时间
    sleep(1)  # 循环间隔,降低资源占用

修改说明

  • 新增page_stable_time变量,记录每次关键操作完成后的时间点,确保只在页面稳定运行1分钟后检查错误
  • 每次成功执行验证绕过、登录、视图切换、全屏操作后,重置稳定时间,避免误判
  • 增加循环间隔sleep(1),减少脚本对系统资源的消耗
  • 优化打印信息为中文,提升可读性

内容的提问来源于stack exchange,提问作者Jacob Revet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:25:36