selenium(java)处理HTML5的视频播放
大多数浏览器使用控件(如 Flash) 来播放规频,但是,不同的浏览器需要使用不同的插件。HTML5 定义了一个新的元素<video>,,指定了一个标准的方式来嵌入电影片段。IE9+、Firefox、Opera、Chrome都支持该元素。
学习虫师的自动化测试selenium 的4.17节 《处理 HTML5 的视频播放》。但是无法运行该章节的demo,所以自己搞了一套。从HTML5写代码开始。
首先要保证环境可用
MP4视频在我本机装的火狐firefox浏览器不支持运行,索性使用chrome。之前写selenium脚本都是基于FirefoxDriver,所以需要下载ChromeDriver。需要注意,selenium版本+ChromeDriver版本+Chrome版本一定要匹配,不然会报错org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser。据说firefox的驱动还是selenium得人员开发的,而google的驱动是google内部人员开发的,兼容性欠佳。
具体版本匹配可以参考:
http://blog.csdn.net/xqhadoop/article/details/77892796
我目前使用的是selenium 2.49+chrome driver 2.31+chrome version 59
Chrome Driver下载完毕后,可以通过以下两种方法指定ChromeDriver位置:
1)通过配置ChromeDriver.exe位置到path环境变量实现。
2)通过webdriver.chrome.driver.系统属性实现。实现代码如下:
System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
准备工作完成,写一个最简单的打开浏览器的脚本试一下:
package video; import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class Video3 {
public static void main(String[] args) throws InterruptedException { System.out.println("chrome driver"); // ChromeDriver没有放在C盘,所以使用 System 的 setProperty()方法指定浏览器驱动的路径
System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver_win32\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // 打开浏览器
driver.get("http://www.baidu.com"); Thread.sleep(3000); driver.quit(); }
}
在Chrome浏览器上顺利打开,说明驱动没有问题。
接下来准备html文档,先随便下载一个MP4格式的文件,存放在本地,此处存放的路径为E:/selenium/aaa.mp4
然后设置controls=“controls”,可控制播放暂停。存放这个html的路径为file:///C:/Users/Administrator/Desktop/video2.html
<!DOCTYPE html>
<html>
<head>
<title>HTML5-video</title>
</head>
<body> <video width="320" height="240" controls="controls">
<source src="E:/selenium/aaa.mp4" type="video/mp4">
您的浏览器不支持 video 属性。
</video> </body>
</html>
最后基于myEclipse编写selenium脚本
Chrome浏览器可以使用自带的developer tools定位视频播放控件的xpath,具体方法可参考http://blog.csdn.net/mayanyun2013/article/details/72148734
WebElement video = driver.findElement(By.xpath("/html/body/video"));
完整代码:
package video; import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class Video2 {
public static void main(String[] args) throws InterruptedException { System.out.println("chrome driver"); // ChromeDriver没有放在C盘,所以使用 System 的 setProperty()方法指定浏览器驱动的路径
System.setProperty("webdriver.chrome.driver", "E:\\selenium\\chromedriver_win32\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // 打开浏览器
driver.get("file:///C:/Users/Administrator/Desktop/video2.html"); // 定位视频播放控件
WebElement video = driver.findElement(By.xpath("/html/body/video")); JavascriptExecutor jse = (JavascriptExecutor)driver; //获得视频的URL
jse.executeScript("return arguments[0].currentSrc", video); // 播放视频,播放15秒
jse.executeScript("return arguments[0].play()", video);
Thread.sleep(15000); // 暂停视频
jse.executeScript("arguments[0].pause()", video); driver.quit();
} }
JavaScript 函数有个内置的对象叫作 arguments。argument 对象包含了函数调用的参数数组,[0]表示取对象的第1个值。
currentSrc 熟悉返回当前音频/视频的 URL。如果未设置音频/视频,则返回空字符串。
load()、play()、pause() 等控制着视频的加载、播放和暂停。
---------------------
本文来自 ab_2016 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/ab_2016/article/details/78412520?utm_source=copy
selenium(java)处理HTML5的视频播放的更多相关文章
- selenium+Python(处理html5的视频播放)
Webdriver支持在指定的浏览器测试HTML5,另外可以用JavaScript来测试这些功能,这样就可以在任何浏览器上测试HTML5 多数浏览器使用控件来播放视频,但是不同浏览器需要使用不同的插件 ...
- selenium webdriver处理HTML5 的视频播放
import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.sele ...
- python+selenium之处理HTML5的视频播放
from selenium import webdriver from time import sleep driver = webdriver.Firefox() driver.get(" ...
- Selenium(十二):操作Cookie、调用JavaScript、HTML5的视频播放
1. 操作Cookie 有时候我们想要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试的.WebDriver提供了操作Cookie的相关方法,可以读取.添加和删 ...
- Selenium 2自动化测试实战22(处理HTML5的视频播放)
一.处理HTML5的视频播放 大多数浏览器使用控件(如Flash)来播放视频,但是,不同的浏览器需要使用不同的插件.HTML5定义了一个新的元素<video>,指定了一个标准的方式来嵌入电 ...
- selenium第一课(selenium+java+testNG+maven)
selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包 ...
- Selenium+Java+TestNG环境配置
1. JDK 2.eclipse+TestNG >TestNG安装. Name:testng Location:http://beust.com/eclipse.如图: 3.seleniu ...
- selenium+java破解极验滑动验证码的示例代码
转自: https://www.jianshu.com/p/1466f1ba3275 selenium+java破解极验滑动验证码 卧颜沉默 关注 2017.08.15 20:07* 字数 3085 ...
- 行为驱动:Cucumber + Selenium + Java(二) - 第一个测试
在上一篇中,我们搭建好了Selenium + Cucumber + Java的自动化测试环境,这一篇我们就赶紧开始编写我们的第一个BDD测试用例. 2.1 创建features 我们在新建的java项 ...
随机推荐
- Atitit 个人信息数据文档知识分类
Atitit 个人信息数据文档知识分类 1.1. 知识分类法,参照图书分类法 1 2. Attilax知识分类 2 2.1. 公共文档(一般技术资料,通过标题可以网上搜索到的) 2 2.2. sum ...
- Objective-c在宏里拼接字符串
//正式服务器#define API_DOMAIN @"www.online.com"//测试服务器//#define DOMAINXX @"192.168.0.10&q ...
- 浅析PCIe链路LTSSM状态机
我们知道,在PCIe链路可以正常工作之前,需要对PCIe链路进行链路训练,在这个过程中,就会用LTSSM状态机.LTSSM全称是Link Training and Status State Machi ...
- Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式1
0. 前言 之前帐号认证用过自己写的进行匹配,现在要学会使用标准了.准备了解和使用这个OAuth2.0协议. 1. 配置 1.1 配置pom.xml 有些可能会用不到,我把我项目中用到的所有包都贴出来 ...
- Word实用教程——五分钟教你如何在任意页开始添加页码
最近在写一篇论文,但是在排版上遇到一点小问题,就是要加入页码,而且页码是从目录的下一页开始计数,于是我就在网上找如何在任意页添加页码.后来辗转终于搞定,真心觉得这一个小功能让微软做的如此的麻烦,真是活 ...
- Gartner:2018人工智能技术成熟度曲线
https://www.secrss.com/articles/4392 人工智能被广为关注,但是一些想法恐难达到预期.本成熟度曲线将追踪AI基本趋势和未来创新,以确定人工智能技术发展的范围.状态.价 ...
- How to fix ERR_SSL_VERSION_INTERFERENCE on Chrome?
https://ugetfix.com/ask/how-to-fix-err_ssl_version_interference-on-chrome/ Question Issue: How to fi ...
- [Windows Azure] How to use the Queue Storage Service
How to use the Queue Storage Service version 1.7 version 2.0 This guide will show you how to perform ...
- 李洪强和你一起学习前端之(9)规避脱标,CSS可见性,滑动门案例
1 复习昨天知识 1.1 浮动 特点: >浮动的元素不占位置(脱标) >可以将行内元素转化为行内块元素 >块级元素在一行上显示 >设置了浮动的元素,影响其后面的元素 作 ...
- 2017-04-26 ios ipv6那些事(已完美解决)
2017-04-26 ios ipv6那些事(已完美解决) 工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...