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 ...
随机推荐
- static关键字的功能
转载:https://blog.csdn.net/guotianqing/article/details/79828100 C语言&C++ 1.局部变量 如果在一个函数内部定义了一个静态变量, ...
- 第二章(java程序设计)第三章(语言基础)
第二章 2.1 对象 对象的概念是由现实世界引入问题模型: 对象包含有:状态和行为.具体地来说是: 数据封装:对象的方法的作用就是:将内部变量封装起来,提供给外界交互的窗口.(实现对数据的隐藏) 继承 ...
- python之深浅copy
深浅copy 1.赋值运算 a = [1, 2, 3] b = a a.append(666) print(b) #output:[1, 2, 3, 666] 对于赋值运算来说,a与b指向的是同一个内 ...
- C/C++ %s %d %u 基本概念与用法
%d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %0 无符号以八进制表示的 ...
- (暴力 记录)Camellia的难题 -- zzuli -- 1784
http://acm.zzuli.edu.cn/problem.php?id=1784 Camellia的难题 Time Limit: 2 Sec Memory Limit: 128 MBSubmi ...
- (简单匹配)Card Game Cheater -- hdu --1528
http://acm.hdu.edu.cn/showproblem.php?pid=1528 Card Game Cheater Time Limit: 2000/1000 MS (Java/Othe ...
- MATLAB相关快捷键以及常用函数
MATLAB快捷键大全 F1帮助 F2改名F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 ...
- web-day1
第1章 WEB01-HTML篇 今日任务 网站信息页面案例 网站图片信息页面案例 网站友情链接页面案例 网站首页案例 网站注册页面案例 网站后台页面案例 教学导航 教学目标 了解什么是标记语言 了 ...
- 【Andorid开发框架学习】之Mina开发之Mina简介
今天我将介绍 Apache MINA的基本概念和 API,包括 I/O服务.I/O 会话.I/O 过滤器和 I/O 处理器. 一.MINA的简介 Apache MINA是一个网络应用程序框架,用来帮助 ...
- Surface 2装机必备软件指南
新买的Surface到货了还不知道有什么用,每天就用来划划点点?有点太浪费了吧!跟哥走,哥给你推荐几款Surface 2装机必备的软件~应用商店,走起~ 初次使用看过来:Win8宝典 如果你是一个像我 ...