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 ...
随机推荐
- ThinkPHP 二维码生成
请求获取并展示二维码 <img src="<?php echo U('createCode?zsnumber='.$time.$kcname['id'].$stuInfo['id ...
- hdu-1059(多重背包+二进制优化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意:输入6个数,每个数ni代表价值为i的物品有ni个.求如果这些物品能均分给两个人,每个人获得 ...
- 第15章 上下文管理器和else块
#<流流畅的Python>第15章 上下文管理器和else块 #15.1 先做这个,再做那个:if语句之外的else块 #else子句不仅能在if语句中使用,还能在for.while和tr ...
- css 特殊使用技巧
1 border颜色设置 border-color: transparent black black black; 分别设置四条边框的颜色 上边transparent 透明无色 2 阴影 t ...
- Java网络技术-待续
TCP Sockets基础 Sockets,是用户程序与TCP/IP协议的中介. 实现TCP Sockets通信,需要本地IP和端口,对方IP和端口.客户端发通信请求,发送或接收流,关 ...
- oracle之简单总结
视图: 作用:是数据库对象,是一个或多个表的或视图中导出的虚表,视图对应的数据并不是存储在视图中,而是存储在数据库中的数据表中. 视图的结构和数据是对数据表进行查询的结果. 优点: 1.简化数据操作. ...
- How to fix "http error 403.14 - forbidden" in IIS7
If you encounter the following error: "http error 403.14 - forbidden. The Web server is configu ...
- How to transfer developer profile to one mac to another mac
Export developer profile from old mac. In the Xcode Organizer, select your team in the Teams section ...
- android PendingIntent 使用通知传递多个参数,及不覆盖的问题
Intent updateIntent = new Intent(GetNoticeService.this, DetailGonggaoActivity.class); updateIntent.p ...
- [kuangbin]树链剖分A - Aragorn's Story
比较水的题了,比模板题还要简单一点 理解了这个结构,自己打出来的,但是小错误还是很多,越来越熟练吧希望 错误函数updata,updata_lca,query||错误地方区间往下递归的时候是left ...