Selenium简单测试页面加载速度的性能(Page loading performance)
利用selenium的可以执行javascript脚本的特性,我写了一个java版本的获得页面加载速度的代码,这样你就可以在进行功能测试的同时进行一个简单的测试页面的加载速度的性能测试。
我现在的项目用途主要是在功能测试的同时获得各个测试页面的加载速度,看看哪些页面的加载速度比较慢,如果加载的时间太慢,我就专门针对这个页面使用YSlow工具去检查一下这个页面,然后给出这个页面加载比较慢的建议,提交给开发人员,让他们自己去看看如何解决这个问题?
通过调用通用的浏览器的Performance.timing接口API进而获得页面的真实加载速度。这里需要注意的是,通过调用API window.performance.timing.loadEventEnd,我发现在IE浏览器上可能返回的是Double类型的值,但是在Chrome或者是Firefox上返回的却是Long类型的,所以下面的代码中我就进行了不同类型的转换。
通过调试,下面的代码可以用在IE,Chrome,Firefox浏览器上。其他的浏览器没有测试。
/**
* get the current page loading time ,it will return seconds
* @param driver
*
* @see http://www.softwareishard.com/blog/firebug/support-for-performance-timing-in-firebug/
* @see http://selenium.polteq.com/en/implement-web-timings/
* @see http://www.html5rocks.com/en/tutorials/webperformance/basics/
* @see http://www.theautomatedtester.co.uk/blog/2010/selenium-webtimings-api.html
*/
public long getPageLoadTime(){
long pageloadtime=0;
long pagestarttime=0;
long pageendtime=0; //try{
//different with browser ,ie will return is double value but firefox and chrome will return is long
Object startobject=executeJSReturn("return window.performance.timing.navigationStart;");
Object endobject=executeJSReturn("return window.performance.timing.loadEventEnd;");
//@SuppressWarnings("unchecked")
// pagetimer=executeJSReturn("var performance = window.performance || window.webkitPerformance || window.mozPerformance || window.msPerformance || {};"+
// " var timings = performance.timing || {};"+
// " return timings;");
//long pageloadend=(pagetimer.get("loadEventEnd"))/1000;
// long pageloadstart=(pagetimer.get("navigationStart"))/1000;
//pageloadtime=(pageloadend-pageloadstart);
//think it's the firefox or chrome browser
if(startobject instanceof Long){
pagestarttime=(Long) startobject;
logger.debug("the page navigate start time is:"+pagestarttime);
}
if(startobject instanceof Double){
Double tempvalue=(Double) startobject;
pagestarttime=new Double(tempvalue).longValue();
logger.debug("the page navigate start time is:"+pagestarttime);
}
if(endobject instanceof Long){
pageendtime=((Long) endobject);
logger.debug("the page end time is:"+pageendtime);
}
if(endobject instanceof Double){
double tempvalue=(Double) endobject;
pageendtime=new Double(tempvalue).longValue();
logger.debug("the page end time is:"+pageendtime);
} pageloadtime=(pageendtime-pagestarttime)/1000;
logger.info("Get current page loading time is:"+pageloadtime); return pageloadtime;
}
希望以上的代码可以帮助你进一步了解Selenium进行性能测试的一个功能。
Selenium简单测试页面加载速度的性能(Page loading performance)的更多相关文章
- 如何在mysql数据库生成百万条数据来测试页面加载速度
1.首先复制一条sql 在复制前,需要确定该记录是否有主键 若无,则代码非常简单, "; 复制的表名↑ 粘贴的表名↑ ...
- 转: web 页面加载速度优化实战-100% 的飞跃提升
前言 一个网站的加载速度有多重要? 反正我相信之前来 博主网站 的人至少有 50% 在加载完成前关闭了本站. 为啥捏? 看图 首页完整加载时间 8.18s,看来能进来看博主网站的人都是真爱呀,哈哈. ...
- web页面加载速度缓慢,如何优化?
参考博客: https://www.cnblogs.com/xp796/p/5236945.html https://www.cnblogs.com/MarcoHan/p/5295398.html - ...
- 压缩代码加速ecshop程序页面加载速度
由于页面有很多图片,页面加载速度有点慢,本来打算减小图片的体积,后来想想这个后期还得测试下,所以暂时不打算使用google的图片优化工具,先把ecshop生成的html代码压缩下吧 压缩前:首页体积为 ...
- Web前端性能优化——如何提高页面加载速度
前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个"Duang"的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒, ...
- 【转】Web前端性能优化——如何提高页面加载速度
前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒, ...
- 基于Vue的SPA如何优化页面加载速度
常见的几种SPA优化方式 减小入口文件体积 静态资源本地缓存 开启GZip压缩 使用SSR ..... 减小入口文件体积,常用的手段是路由懒加载,开启路由懒加载之后,待请求的页面会单独打包js文件,使 ...
- Web前端性能优化——提高页面加载速度
前言: 在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒, ...
- jQuery实现图片预加载提高页面加载速度和用户体验
我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题呢?首先我们会想到的是提高服务器性能,使用静态缓存等手段来加快图 ...
随机推荐
- Orchard 之:Widget,兼看 Layer 在权限控制中的作用
一:Widget 可以理解为控件,可以直接被页面所引用.行为类似与分部页面,比如,我们可以创建一个 商品列表 Widget,然后这个 Widget 就可以被很多页面所引用. 理解 Widget 这个概 ...
- http协议报头详解HTTP协议结构
http协议 请求报文和响应报文都是由以下4部分组成 1.请求行 2.请求头 3.空行 4.消息主体 下图为http请求的报文结构 下图为http响应报文结构 请求行 格式为: Method Requ ...
- REST构架风格介绍之二:CRUD
转载自:Todd Wei http://www.cnblogs.com/weidagang2046/archive/2009/05/09/1453065.html 上一节我们通过两个例子初步体 ...
- iOS:仿写探探App动画
一.简单介绍 探探动画比较新颖,这也是它在众多交友软件中火热的一个特色.实现这种动画的方式可以有两种方式实现: 1.使用转场动画实现 2.使用CollectionView自定义布局实现, 此处我提供 ...
- AngulerJS学习(五)按需动态载入文件
在此之前我么年首先要先了解几个东西: $q 简单介绍: $q:主要解决的是异步编程的问题,是指描写叙述通过一个承诺行为与对象代表的异步运行的行动结果的交互.可能会也可能不会再不论什么时候完毕. 我们通 ...
- POJ 1265 pick定理
pick公式:多边形的面积=多边形边上的格点数目/2+多边形内部的格点数目-1. 多边形边上的格点数目可以枚举每条边求出.如果是水平或者垂直,显然可以得到,否则则是坐标差的最大公约数减1.(注这里是不 ...
- Ubuntu mysql开启远程登录的方法
一.问题 Ubuntu 16.0.4 mysql5.7 二.解决问题 Ubuntu中MySQL的配置文件是在/etc/mysql/mysql.conf.d/mysqld.cnf,VI该文件把 b ...
- C++之new、delete 与malloc、free的异同
在C/C++编程中常常会申请内存.而对内存的申请释放操作有两套方法: new.delete 与malloc.free.他们的使用最好是成对使用,不要去混搭---这可不是时尚界哦. 例如以下是这两组方法 ...
- 2017年11月8日最新仿互站导航t5友价商城-9套模板首页都增加微信登陆
今天测试效果如下,直接看图吧,入口在下方,点击图片直达 把9套餐模板都添加了微信首页登陆,仿互站的导航,操作比互站还要方便,官方一直对https 支持不太友好,索性把所有的https bug都修复了, ...
- GPUImage API文档之GPUImageFramebufferCache类
GPUImageFramebufferCache类负责管理GPUImageFramebuffer对象,是一个GPUImageFramebuffer对象的缓存. 方法 - (GPUImageFrameb ...