Python selenium 中如何对网站中内嵌的视频进行操作呢?
就是如图,想点击这个切换线路。
但是在网页的代码中看不到这个按钮在哪儿点击
请问有什么方法可以进行操作呢?
Python selenium 中如何对网站中内嵌的视频进行操作呢?
pyautogui
对于网站内嵌视频的操作,Selenium本身不直接支持,但可以通过JavaScript来间接控制。核心思路是找到视频元素,然后调用其原生API。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("你的目标网页URL")
# 等待并定位视频元素(根据实际情况调整选择器)
wait = WebDriverWait(driver, 10)
video_element = wait.until(EC.presence_of_element_located((By.TAG_NAME, "video")))
# 通过JavaScript执行视频控制
driver.execute_script("arguments[0].play();", video_element) # 播放
driver.execute_script("arguments[0].pause();", video_element) # 暂停
driver.execute_script("arguments[0].currentTime = 60;", video_element) # 跳转到60秒
# 获取视频状态
duration = driver.execute_script("return arguments[0].duration;", video_element)
current_time = driver.execute_script("return arguments[0].currentTime;", video_element)
is_paused = driver.execute_script("return arguments[0].paused;", video_element)
print(f"视频总时长: {duration}秒")
print(f"当前播放位置: {current_time}秒")
print(f"是否暂停: {is_paused}")
# 如果需要控制音量(0.0到1.0)
driver.execute_script("arguments[0].volume = 0.5;", video_element)
# 如果需要全屏
driver.execute_script("arguments[0].requestFullscreen();", video_element)
driver.quit()
关键点说明:
- 定位元素:视频通常用
<video>标签,但也可能是通过<iframe>或<object>嵌入。如果是iframe,需要先driver.switch_to.frame()切换进去。 - JavaScript控制:所有操作都通过
execute_script()调用视频元素的原生方法(play/pause)和属性(currentTime, volume)。 - 等待机制:务必使用显式等待确保视频元素加载完成。
- 跨域限制:如果视频来自不同域名,可能会遇到跨域安全限制,这时Selenium也无能为力。
一句话建议: 用JavaScript直接调用视频元素的API是最可靠的方法。
谢谢您啦 我去了解一下
通过 driver 的 move_by_offset() 指定某个位置 然后进行鼠标点击操作
这个位置是怎么找的哈,应该通过什么方法来计算呢。。。
超星刷课? Google 搜一下有破解 api 的
主要想自己来学习下 selenium 的相关操作,基本上已经可以一个视频一个视频看了,但是因为我没有用校内网,他那个本校的线路是需要校内网访问的,所以我只能切换一下公网进行观看视频 
move_by_offset() 就是通过坐标点击
你先找到视频上层的 div 节点位置,然后计算一下按钮的相对位置就可以了
这个视频是在一个 iframe 里面的,由于是初学,刚才试了一下,好像不管用。可能是我的方法不对。。。
在 iframe 里面需要 switch 操作切换到 iframe 我记得是这样
我切换到当前 iframe 下后,计算那个本校的坐标是通过外层的 676X542 算的。好像没有看见效果。
这是打算自动刷课吗? gayhub 有个跳课的插件 更方便
谢谢您啦
自己做着玩哈 
我之前做刷课用的 execute script
哦抱歉,我之前做刷课是对视频静音用的执行 js,你的这个的话看看有没有 api 能调用,能调用的话执行 js 应该是最舒服的,不然就要控制鼠标模拟点击


