测试网址:http://www.w3school.com.cn/tiy/loadtext.asp?f=html5_video_simple

package com.allin.pc;

import java.io.File;

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;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.sun.jna.platform.FileUtils;

public class html5VedioPlay {
    public WebDriver driver;
    String baseUrl = "http://www.w3school.com.cn/tiy/loadtext.asp?f=html5_video_simple";
    
    @Test
    public void testVideoPlay() throws InterruptedException{
        //定义页面截图文件对象,用于后面的屏幕截图储存
        File captureScreenFile = null;
        //访问HTML5实现播放器的网页页面
        driver.get(baseUrl);
        //打印出HTML5视频播放器的源码
        System.out.println(driver.getPageSource());
        //获取页面中的video标签
        WebElement videoPlayer = driver.findElement(By.tagName("video"));
        //声明一个JavascriptExecutor对象
        JavascriptExecutor javascritExecutor = (JavascriptExecutor) driver;
        //使用JavaScriptExecutor对象执行JavaScript语句,通过播放器内部的
        //currentsrc属性获取视频文件的网络存储地址
        String videoSrc = (String) javascritExecutor.executeScript("return arguments[0].currentSrc;",
                videoPlayer);
        //输出视频文件的网络存储地址
        System.out.println(videoSrc);
        //断言视频网络地址是否合期望
        Assert.assertEquals("http://www.w3school.com.cn/i/movie.ogg", videoSrc);
        //使用JavascriptExecutor对象执行JavaScript语句,通过播放器内部的duration属性获取视频文件的播放时长
        Double videoDuration = (Double) javascritExecutor.executeScript("return arguments[0].duration;",
                videoPlayer);
        //输出视频的播放时长
        System.out.println(videoDuration.intValue());
        //等待5秒视频加载时间
        Thread.sleep(5000);
        //使用JavaScriptExecutor对象执行JavaScript语句,通过调用播放器内部的play函数来播放影片
        javascritExecutor.executeScript("return arguments[0].play();", videoPlayer);        
        Thread.sleep(2000);
        //播放2秒后,使用JavaScriptExecutor对象执行JavaScript语句,通过调用播放器内部的pause函数暂停播放影片
        javascritExecutor.executeScript("return arguments[0].pause();", videoPlayer);
        Thread.sleep(3000);
        //将暂停视频播放后的页面进行截图,并保存D盘上的videoPlay_pause.jpg文件
        captureScreenFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        //FileUtils.copyFile(captureScreenFile, new File("d:\\videoPlay_pause.jpg"));
    }        
        @BeforeMethod
        public void setUp(){
            System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
            driver = new ChromeDriver();
            
        }
        
        @AfterMethod
        public void tearDown(){
            driver.quit();
        
    }
}

selenium操作H5视频的更多相关文章

  1. selenium如何处理H5视频

    selenium处理H5视频主要使用的是javascript,javascript函数有内置的对象叫arguments,arguments包含了调用的参数组,[0]代表取第一个值. currentSr ...

  2. 【腾讯Bugly干货分享】H5 视频直播那些事

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a42ee6503dfcb22007ede8 Dev Club 是一个交流移动 ...

  3. H5 视频直播相关技术

    一.移动视频直播发展 大家首先来看下面这张图: 可以看到,直播从 PC 到一直发展到移动端,越来越多的直播类 App 上线,同时移动直播进入了前所未有的爆发阶段,但是对于大多数移动直播来说,还是要以 ...

  4. Selenium操作Chrome模拟手机浏览器

    目录 使用指定设备 使用自定义设备 在使用Chrome浏览网页时,我们可以使用Chrome开发者工具模拟手机浏览器,在使用Selenium操作Chrome时同样也可以模拟手机浏览器.主要有以下两种用途 ...

  5. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

  6. 一看就能学会的H5视频推流方案

    本文由云+社区发表 作者:周超 导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程 ...

  7. 每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

    每次用 selenium 操作浏览器都还原了 (比如没有浏览器历史记录)

  8. H5视频直播扫盲

    H5视频直播扫盲 2016-05-25 • 前端杂项 • 14 条评论 • lvming19901227 视频直播这么火,再不学就out了. 为了紧跟潮流,本文将向大家介绍一下视频直播中的基本流程和主 ...

  9. SuperMap空间数据处理与制图操作短视频汇总

    转自:http://blog.csdn.net/supermapsupport/article/details/70227669 空间数据处理与制图是GIS系统建设最基础的部分,这里利用超图桌面软件- ...

随机推荐

  1. 利用box-flex实现 dom元素位置页面底部

    问题: 总是有这样的需求,就是页面上某部分要位于页面的最底部,此“最底部”要求:(1)当页面上内容不足一屏的时候,在最底部显示(2)当页面上内容不止一屏的时候,也就是有垂直滚动条的时候,要在内容的最后 ...

  2. Python2.x和3.x主要差异总结

    本文部分转载自http://my.oschina.net/chihz/blog/123437,部分来自自身修改 开始使用Python之后就到处宣扬Python如何如何好,宣传工作的一大重要诀窍就是做对 ...

  3. asp

    <%@LANGUAGE="%> <!--#include file="include.asp"--> <meta http-equiv=&q ...

  4. Shell displays color output

    格式: echo "/033[字背景颜色;字体颜色m字符串/033[控制码" 如果单纯显示字体颜色可以固定控制码位0m. 格式: echo "/033[字背景颜色;字体颜 ...

  5. 【axc】简单的线性动画绘制

    在一个View上绘制一条直线  然后做出相应的动画效果  可以这样封装三个方法: /** *  划线工具 * *  @param lineArray   线段的点数组 NSValue 类型  默认第一 ...

  6. Java复习笔记--java中this 关键字

    Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. pu ...

  7. iOS cocospods Updating local specs repositories

    pod install --verbose --no-repo-update (在安装的时候) pod update --verbose --no-repo-update (在更新库的时候) 如果长时 ...

  8. Spring AOP 切面编程的方法

    spring aop的使用分为两种,一种是使用注解来实现,一种是使用配置文件来实现. 先来简单的介绍一下这两种方法的实现,接下来详细的介绍各处的知识点便于查阅.目录如下: 1.基于注解实现spring ...

  9. LeetCode Power of Three

    原题链接在这里:https://leetcode.com/problems/power-of-three/ 与Power of Two类似.检查能否被3整除,然后整除,再重复检查结果. Time Co ...

  10. LeetCode Binary Tree Longest Consecutive Sequence

    原题链接在这里:https://leetcode.com/problems/binary-tree-longest-consecutive-sequence/ 题目: Given a binary t ...