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 ...
随机推荐
- 牛客训练六:海啸(二维树状数组+vector函数的使用)
题目链接:传送门 思路: 二维树状数组, vector(first,last)函数中assign函数相当于将first中的函数清空,然后将last中的值赋值给first. 参考文章:传送门 #incl ...
- CSS Sprites (CSS 精灵) 技术
CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢 ...
- auto和decltype(c++11)
1.auto 1)auto是一个类型说明符(类型说明符就是像int.double这样的),用来定义一个变量,它可以让编译器去分析表达式的类型,并使用该表达式的值去初始化变量 //auto定义的变量必须 ...
- IntelliJ IDEA 2017版 spring-boot2.0.2 自动配置Condition
描述: 编译器修改参数 -Dfile.encoding=GBK -Dstr.encoding=GBK Condition位置: 某一个类或注解存在的时候,装配,否则不装配 相关代码: ...
- Camtasia studio8.0破解方法
Camtasia Studio 8.0 注册说明: 1.安装时使用以下信息注册: 用户名: Honorary User密钥: GCABC-CPCCE-BPMMB-XAJXP-S8F6R 或者是 Nam ...
- 基于MySQL自增ID字段增量扫描研究
目录 目录 1 1. 问题 1 2. 背景 1 3. InnoDB表 2 3.1. 自增ID为主键 2 3.2. 自增ID为普通索引 4 3.3. 原因分析 7 4. MyISAM表 8 4.1. 自 ...
- codehouse
1 # 整数部分十进制转二进制 2 3 num = int(raw_input(">>>")) 4 5 if num < 0: 6 isNeg = True ...
- Matlab作图
修改线宽 plot(x,y,'LineWidth',1.5) 在xlabel,ylabel,title中使用latex语言 xlabel('$x$','interpreter','latex') yl ...
- 通过request获取网页资讯 通过BeautifulSoup剖析网页元素
import requests newsUrl ='http://news.sina.com.cn/china/' res = requests.get(newsUrl) res.encoding ...
- bzoj1212(trie+dp)
开始一看多个字符串就想ac自动机,结果发现不行.果然学傻了,,,,只要建个trie然后刷表dp就行了,复杂度最坏是O(字典中最长单词长度*文章长度)的.trie的空间换时间挺不错的. #include ...