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实现图片预加载提高页面加载速度和用户体验
我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题呢?首先我们会想到的是提高服务器性能,使用静态缓存等手段来加快图 ...
随机推荐
- 部署maven的一些要点、遇到的问题和心得体会
maven的部署.遇到的问题和心得体会 2013-10-24 | 阅: 转: | 分享 部署maven的一些要点.遇到的问题和心得体会 (图片看不了,可以下载doc文件) 一. ...
- Just-In-Time Debugging in Visual Studio 禁止VS在服务器上调试
To disable Just-In-Time debugging by editing the registry On the Start menu, search for and run rege ...
- NVelocity语法常用指令
对变量的引用:$ [ ! ][ { ][ a..z, A..Z ][ a..z, A..Z, 0..9, -, _ ][ } ]. 在NVelocity中,对变量的引用都是以$开头加上变量名称.当使用 ...
- Java学习笔记——IO操作之以图片地址下载图片
以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...
- Vue.js vs React vs Angular 深度对比[转]
这个页面无疑是最难编写的,但我们认为它也是非常重要的.或许你曾遇到了一些问题并且已经用其他的框架解决了.你来这里的目的是看看 Vue 是否有更好的解决方案.这也是我们在此想要回答的. 客观来说,作为核 ...
- CentOS6 安装并破解Jira 7
CentOS6 安装并破解Jira 7 JIRA软件是为您的软件团队的每个成员构建的,用来规划,跟踪和发布优秀的软件. https://confluence.atlassian.... 最低硬件要求及 ...
- jQuery对象初始化的多种传参数形式
jQuery对象初始化的传参方式包括:1.$(DOMElement)2.$('<h1>...</h1>'), $('#id'), $('.class') 传入字符串, 这是最常 ...
- DICOM-RT:放疗领域中的各种影像
背景: DICOM-RT系列博文着眼于DICOM3.0中对放疗领域的补充标准,即DICOM-RT.为了方便兴许对DICOM-RT中相关IOD.SOP概念的理解,专栏最近做了放疗相关知识点的普及. PS ...
- (转)SVN服务器搭建和使用(三) 附vs2013 svn插件
转自:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html vs 2013 svn插件:http://www.visua ...
- Flask传递中文URL时的问题
在非IE浏览器上都很好,几乎不用处理,但IE不行,学习了半天,有以下要点: 1.Meta如果设置了编码,如UTF8,浏览器都将中文转码发送,但IE不会! <meta http-equiv=&qu ...