WebDriver高级应用实例(10)
10.1控制HTML5语言实现的视频播放器
目的:能够获取html5语言实现的视频播放器视频文件的地址、时长、控制进行播放暂停
被测网页的网址:
http://www.w3school.com.cn/tiy/t.asp?f=html5_video_all
Java语言版本的API实例代码
package cn.html5; import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod; import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod; public class TestHtml5VideoPlayer {
WebDriver driver;
String url = "http://www.w3school.com.cn/tiy/t.asp?f=html5_video_all";
@Test
public void testVideoPlayer() throws InterruptedException, IOException {
//定义页面截图对象
File captureScreenFile = null;
//打印页面源码
System.out.println(driver.getPageSource());
//进入视频所在的frame
driver.switchTo().frame("i");
//获取页面video对象
WebElement videoPlayer = driver.findElement(By.tagName("video"));
//声明javascriptExecutor对象
JavascriptExecutor javascriptExecutor = (JavascriptExecutor)driver;
//获取视频文件的网络地址
String videoSrc = (String) javascriptExecutor.executeScript("return arguments[0].currentSrc;",videoPlayer);
//输出视频存储地址
System.out.println(videoSrc);
//断言判断视频存储地址是否正确
Assert.assertEquals("http://www.w3school.com.cn/i/movie.ogg",videoSrc);
//duration获取视频的时长
Double videoDuration = (Double)javascriptExecutor.executeScript("return arguments[0].duration;", videoPlayer);
//输出视频时长
System.out.println(videoDuration.intValue());
//等待5秒
Thread.sleep(5000);
//执行javascript,通过内部的函数play()来播放影片
javascriptExecutor.executeScript("return arguments[0].play();", videoPlayer);
Thread.sleep(2000);
//执行javascript语句,通过内部的函数pause()来暂停影片
javascriptExecutor.executeScript("return arguments[0].pause();", videoPlayer);
Thread.sleep(3000);
//对暂停的视频进行截图
captureScreenFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//将截图的图片命名并保存在E盘上
FileUtils.copyFile(captureScreenFile, new File("e:\\videoPaly_pause.jpg"));
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
} @AfterMethod
public void afterMethod() {
driver.quit();
} }
代码解释:
控制视频播放器的原理均需使用JavaScript语句调用视频播放器内部的属性和接口来实现。
10.2在HTML5的画布元素上进行绘画操作
目的:能够在HTML5的画布上进行绘画操作
被测网页的网址:
http://www.w3school.com.cn/tiy/t.asp?f=html5_canvas_line
Java语言版本的API实例代码
package cn.html5; import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod; import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod; public class testHyml5Canvas {
WebDriver driver;
String url = "http://www.w3school.com.cn/tiy/t.asp?f=html5_canvas_line";
JavascriptExecutor javascriptExecutor;
@Test
public void testCanvas() throws IOException {
WebDriverWait wait = new WebDriverWait(driver, 15);
//声明File对象,用于保存截屏内容
File captureScreenFile = null;
//声明一个JavascriptExecutor对象
JavascriptExecutor javascriptExecutor = (JavascriptExecutor)driver;
//跳转至canvas所在的框架,不然无法定位元素
driver.switchTo().frame("i");
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='myCanvas']")));
/*
* 调用JavaScript语句,在页面画布上画一个红色的图案
* getElementById('myCanvas'); 语句获取页面上的画布元素
* var cxt = c.getContext('2d'); 设定画布为2d
* cxt.fillStyle = '#FF0000'; 设定填充色为 # FF0000 红色
* cxt.fillRect(0, 0, 150, 150); 在画布上绘制矩形
* */
javascriptExecutor.executeScript("var c=document.getElementById('myCanvas');"
+"var cxt = c.getContext('2d');"
+"cxt.fillStyle='#FF0000';"
+"cxt.fillRect(0,0,150,150);");
//绘制红色矩形后,进行截屏,并保存为E盘HTML5Canvas.jpg文件
captureScreenFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(captureScreenFile, new File("e:\\HTML5Canvas.jpg"));
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
} @AfterMethod
public void afterMethod() {
driver.quit();
} }
10.3操作HTML5的存储对象
目的:能够读取HTML5的localStorage和sessionStorage的内容,并删除存储的内容
被测网页的网址:
http://www.w3school.com.cn/tiy/t.asp?f=html5_webstorage_local
http://www.w3school.com.cn/tiy/t.asp?f=html5_webstorage_session
Java语言版本的API实例代码
package cn.html5; import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod; public class testHtml5Storage {
WebDriver driver;
String loacalStorage = "http://www.w3school.com.cn/tiy/t.asp?f=html5_webstorage_local";
String sessionStorage = "http://www.w3school.com.cn/tiy/t.asp?f=html5_webstorage_session";
@Test
public void html5Storage() {
driver.get(loacalStorage);
JavascriptExecutor javascriptExecutor = (JavascriptExecutor)driver;
//获取localStorage中lastname的值
String lastname = (String) javascriptExecutor.executeScript("return localStorage.lastname;");
Assert.assertEquals("Gates", lastname);
javascriptExecutor.executeScript("localStorage.clear()");
}
@Test
public void Html5SessionStorage(){
driver.get(sessionStorage);
JavascriptExecutor javascriptExecutor =(JavascriptExecutor)driver;
String lastname = (String) javascriptExecutor.executeScript("return sessionStorage.lastname");
Assert.assertEquals("Smith", lastname);
javascriptExecutor.executeScript("sessionStorage.removeItem('lastname');");
javascriptExecutor.executeScript("sessionStorage.clear();");
}
@BeforeMethod
public void beforeMethod() {
System.setProperty("webdriver.chrome.driver", "D:\\WebDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
} @AfterMethod
public void afterMethod() {
driver.quit();
} }
WebDriver高级应用实例(10)的更多相关文章
- WebDriver高级应用实例(6)
6.1精确比较网页截图图片 目的:对于核心界面进行截屏,并且使用测试过程中的截图和以前测试过程中的截图进行比较.确认页面是否发生了改变 被测网页的网址: http://www.baidu.com Ja ...
- WebDriver高级应用实例(5)
5.1对象库(UI Map) 目的:能够使用配置文件存储被测试页面上的元素的定位方式和定位表达式,做到定位数据和程序的分离.方便不具备编码能力的测试人员进行修改和配置. 被测网页的网址: http:/ ...
- WebDriver高级应用实例(4)
4.1操作web页面的滚动条 被测网页的网址: http://v.sogou.com Java语言版本的API实例代码 import org.testng.annotations.Test; impo ...
- WebDriver高级应用实例(1)
1.1使用JavaScriptExecutor单击元素 被测网页的网址: http://www.baidu.com Java语言版本的API实例代码 import org.testng.annotat ...
- WebDriver高级应用实例(9)
9.1封装操作表格的公用类 目的:能够使自己编写操作表格的公用类,并基于公用类进行表格中的元素的各类操作 被测网页的网址的HTML代码: <html> <body> <t ...
- WebDriver高级应用实例(8)
8.1使用Log4j在测试过程中打印日志 目的:在测试过程中,使用Log4j打印日志,用于监控和后续调试测试脚本 被测网页的网址: http://www.baidu.com 环境准备: (1)访问ht ...
- WebDriver高级应用实例(7)
7.1在测试中断言失败的步骤进行屏幕截图 目的:在测试过程中,在断言语句执行失败时,对当前的浏览器进行截屏,并在磁盘上新建一个yyyy-mm-dd格式的目录,并在断言失败时新建一个已hh-mm-ss格 ...
- WebDriver高级应用实例(3)
3.1自动化下载某个文件 被测网页的网址: https://pypi.org/project/selenium/#files Java语言版本的API实例代码 import java.util.Has ...
- WebDriver高级应用实例(2)
2.1在日期选择器上进行日期选择 被测网页的网址: https://www.html5tricks.com/demo/Kalendae/index.html Java语言版本的API实例代码 impo ...
随机推荐
- 2019.01.19 codeforces893F.Subtree Minimum Query(线段树合并)
传送门 线段树合并菜题. 题意简述:给一棵带点权的有根树,多次询问某个点ppp子树内距离ppp不超过kkk的点的点权最小值,强制在线. 思路: 当然可以用dfsdfsdfs序+主席树水过去. 然而线段 ...
- linux学习--查看操作系统版本及cpu及内存信息
查看版本当前操作系统内核信息 uname -a 查看当前操作系统版本信息 cat /proc/version 查看物理cpu个数: cat /proc/cpuinfo| grep "phy ...
- openstack查看命令的restful调用形式
[root@cc10 fast-pulsar2]# [root@cc10 fast-pulsar2]# cinder --debug type-create hzb DEBUG:keystonecli ...
- UVa 10870 Recurrences (矩阵快速幂)
题意:给定 d , n , m (1<=d<=15,1<=n<=2^31-1,1<=m<=46340).a1 , a2 ..... ad.f(1), f(2) .. ...
- UVa 11762 Race to 1 (数学期望 + 记忆化搜索)
题意:给定一个整数 n ,然后你要把它变成 1,变换操作就是随机从小于等于 n 的素数中选一个p,如果这个数是 n 的约数,那么就可以变成 n/p,否则还是本身,问你把它变成 1 的数学期望是多少. ...
- Arria10调试问题集之——480转成270中DDR4 IP重新生成的问题
在把FPGA器件从480修改成270时DDR4报错: Error (16383): Silicon revision parameter for the following EMIF/PHYLite ...
- dom4j 通过 org.dom4j.DocumentFactory 设置命名空间来支持 带namespace 的 xpath
测试文件 test.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:/ ...
- crontab使用环境变量
两种方式: 1)直接在crontab中定义变量,如: A=123 * * * * * echo $A > /tmp/a.txt 注意在定义变量时不能使用$引用其它变量,如下面的做法错误: A=1 ...
- (转)WAMP多站点配置
转自:http://wislab.net/archives/43.html Wamp正在被广泛使用,其傻瓜式的安装配置,使得我们可以得心应手地完成以往较为烦琐的服务器环境搭建过程,直接进入到网页程序的 ...
- 第一章javascript词法结构笔记摘要
语法介绍 javascript最流行的脚本语言,用于web和HTML,服务器.pc.移动端 轻量级语言,可以插入HTML页面,由浏览器按编写顺序执行 一.字符集 用Unicode字符集编写,是ASCI ...