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进行性能测试的一个功能。
作者:高级测试开发网
博客地址:https://seniortesting.club
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
Selenium
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?