selenium处理H5视频主要使用的是javascript,javascript函数有内置的对象叫arguments,arguments包含了调用的参数组,[0]代表取第一个值。

currentSrc 返回当前音频或视频的URL,如果未设置则返回空字符串。

load() , play() , pause()代表视频的加载,播放,停止。

示例1:

from selenium import webdriver
from time import sleep dr = webdriver.Chrome()
dr.get('https://www.videojs.com')
dr.implicitly_wait(10)
video = dr.find_element_by_css_selector("#vjs_video_3_html5_api")
url = dr.execute_script("return arguments[0].currentSrc;",video)
print(url)
print("start")
dr.execute_script("return arguments[0].play()",video)
sleep(10)
print('stop')
dr.execute_script("return arguments[0].pause()",video)
dr.quit()

运行上面代码报错如下:

blob:https://videojs.com/905716de-68da-493b-b78d-0a56ea256ee2
start
Traceback (most recent call last):
File "js.py", line 11, in <module>
dr.execute_script("return arguments[0].play()",video)
File "F:\python3.7\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 635, in execute_script
'args': converted_args})['value']
File "F:\python3.7\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 320, in execute
self.error_handler.check_response(response)
File "F:\python3.7\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD
(Session info: chrome=83.0.4103.61)

解决思路,模拟手动点击播放

from selenium import webdriver
from time import sleep dr = webdriver.Chrome()
dr.get('https://www.videojs.com')
dr.implicitly_wait(10)
video = dr.find_element_by_css_selector("#vjs_video_3_html5_api")
url = dr.execute_script("return arguments[0].currentSrc;",video)
print(url)
print("start")
js = "document.querySelector('#vjs_video_3 > div.vjs-poster').click()"
dr.execute_script(js) sleep(15)
print('stop')
dr.execute_script("return arguments[0].pause()",video)
dr.quit()

结果:

blob:https://videojs.com/3d283b74-9f8e-4573-9820-d805ce938195
start
stop ***Repl Closed***

selenium如何处理H5视频的更多相关文章

  1. selenium操作H5视频

    测试网址:http://www.w3school.com.cn/tiy/loadtext.asp?f=html5_video_simplepackage com.allin.pc;import jav ...

  2. 【腾讯Bugly干货分享】H5 视频直播那些事

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6503dfcb22007ede8 Dev Club 是一个交流移动 ...

  3. H5 视频直播相关技术

    一.移动视频直播发展 大家首先来看下面这张图: 可以看到,直播从 PC 到一直发展到移动端,越来越多的直播类 App 上线,同时移动直播进入了前所未有的爆发阶段,但是对于大多数移动直播来说,还是要以 ...

  4. 一看就能学会的H5视频推流方案

    本文由云+社区发表 作者:周超 导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程 ...

  5. H5视频直播扫盲

    H5视频直播扫盲 2016-05-25 • 前端杂项 • 14 条评论 • lvming19901227 视频直播这么火,再不学就out了. 为了紧跟潮流,本文将向大家介绍一下视频直播中的基本流程和主 ...

  6. iOS APP 中H5视频默认全屏播放问题解决

    问题描述:在Android中,视频可以正常在H5页面局部播放,iOS中则自动切换至全屏模式. 查看资料得以解决,20190301记录下来. 解决方法:IOS10及以后,在 video标签页中只包含 w ...

  7. H5视频推流方案

    导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程中的经验. 环境部署 1. 配置 ...

  8. 简单的 H5 视频推流解决方案

    导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程中的经验. 环境部署 1. 配置 ...

  9. selenium抓取视频

    今天闲着没事,用selenium抓取视频保存到本地,只爬取了第一页,只要小于等于5分钟的视频... 为什么不用requests,没有为什么,就因为有些网站正则和xpath都提取不出来想要的东西,要么就 ...

随机推荐

  1. Hive sql函数

    date: 2018-11-16 19:03:08 updated: 2018-11-16 19:03:08 Hive sql函数 一.关系运算 等值比较: = select 1 from dual ...

  2. 【3】TensorFlow光速入门-训练及评估

    本文地址:https://www.cnblogs.com/tujia/p/13862357.html 系列文章: [0]TensorFlow光速入门-序 [1]TensorFlow光速入门-tenso ...

  3. STM32入门系列-CMSIS标准

    使用寄存器点亮开发板上LED,这种开发方式显然是不适合大众,对于STM32这样庞大的芯片,内部寄存器实在太多,如果操作的外设比较多,那么就需要花很多时间查询底层寄存器内容,而且即使程序写好,如果要换其 ...

  4. LORA串口无线数据透明传输终端ZSL311

    ZSL311是由成都众山科技生产销售的一款LORA串口无线数据透明传输终端,采用的是LoRa扩频技术来进行无线数据传输,同时提供RS485和RS232串口,为用户提供全透明数据传输模式.支持星形.Me ...

  5. Learn day8 re正则表达式\search函数\反射\tcp发送消息(循环)\udp发送消息

    1.匹配单个字符 # ### 正则表达式 - 单个字符匹配 import re ''' findall 把匹配的结果直接返回到列表中 lst = re.findall("正则表达式" ...

  6. Charles使用part2——代理设置

    一.charles代理原理: 如果本地开了代理:  二.设置代理 1.设置代理端口: proxy->proxy setting 打开代理设置界面,代理端口默认是 8888,可以使用默认也可以自己 ...

  7. .Net 5 正式版RTM 发布

    下载连接 https://dotnetcli.azureedge.net/dotnet/Sdk/5.0.100-rtm.20515.8/dotnet-sdk-5.0.100-rtm.20515.8-w ...

  8. centos6.5开机执行命令

    虚拟机由于用nat方式联网centos6.5,设置了eth0 dhcp,开机没自动获取到IP, 导致secureCRT连不上,所以,让linux开机自动执行下dhclient获取下分配的ip, 这样, ...

  9. 基于CPU版本的Caffe推理框架

    最近一段时间,认真研究了一下caffe.但是,里面内容过多,集合了CPU版本和GPU版本的代码,导致阅读起来有些复杂.因此,特意对caffe代码进行了重构,搭建一个基于CPU版本的Caffe推理框架. ...

  10. linux之NTP服务

    1. NTP服务(网络时间协议) Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒) ...