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

如何用Selenium获取视频进度HTML变量值并监控100%状态

监控视频进度条并在播放完成时触发操作

没问题,我来帮你搞定这个视频进度监控的需求!你找对了方向,用JavaScript Executor确实是获取这类动态更新属性的可靠方式,下面是具体的实现步骤和代码示例:

步骤1:定位目标进度条元素

首先用Selenium的常规定位方法找到那个带aria-valuenow的scrubBar元素:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
# 先打开你的目标视频页面
scrub_bar = driver.find_element(By.CLASS_NAME, "scrubBar")

步骤2:用JavaScript Executor获取实时进度值

因为这个属性是动态更新的(尤其是Angular这类框架渲染的元素),直接用get_attribute()可能拿不到最新值,用JS执行器能更稳定地获取到实时的aria-valuenow:

def get_current_progress():
    # 执行JS获取属性值,去掉末尾的%号转成数字方便判断
    progress_text = driver.execute_script('return arguments[0].getAttribute("aria-valuenow");', scrub_bar)
    return float(progress_text.replace('%', ''))

步骤3:循环监控进度直到完成

接下来就可以循环检查进度,直到它达到100%后触发你的操作。记得加个超时限制,避免无限等待:

import time

# 最多等待5分钟,可根据视频时长调整
max_wait_duration = 300
start_time = time.time()

while True:
    current_progress = get_current_progress()
    print(f"当前播放进度:{current_progress}%")
    
    # 判定播放完成(有些播放器可能不会精确到100%,可以设成>=99.5)
    if current_progress >= 100:
        print("视频播放完成!开始执行后续操作...")
        # 这里写入你要触发的代码,比如点击按钮、导出数据等
        # your_custom_action()
        break
    
    # 检查是否超时
    if time.time() - start_time > max_wait_duration:
        print("等待超时,视频未完成播放")
        break
    
    # 每秒检查一次,可根据需求调整间隔
    time.sleep(1)

额外提醒

  • 如果页面会刷新或者元素会重新渲染,建议每次检查前重新定位scrub_bar元素,避免出现StaleElementReferenceException
  • 如果你用的是Java/C#等其他语言,核心逻辑完全一致,只是语法略有不同。比如Java里的写法是:((JavascriptExecutor) driver).executeScript("return arguments[0].getAttribute('aria-valuenow')", scrubBar);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:11:44