我正在尝试使用Selenium WebDriver捕获浏览器记录的客户端/服务器响应时间。我的selenium测试用例是用Java编写的。我无法控制我正在测试的代码,并尝试了下面列出的各种解决方案,但它们都不能100%满足我的要求。
在一天结束时,我希望能够用start()和stop()逻辑包围测试步骤,并将浏览器记录的客户端/服务器响应时间保存到数据库进行报告。 / p>
如果我遗漏了一些明显的东西,请提出一个不同的方法!
我尝试过的事情:
1。)使用start()和stop()计时器逻辑手动环绕测试步骤。
PROS:最简单的解决方案,它适用于页面加载和ajax调用。 缺点:没有捕获浏览器的真实响应时间,如果Selenium方面的等待时间异常长,则会错误地报告这些数字。它还将用户输入等内容视为我不想要的交易的一部分。我不一定控制我正在处理的Page Objects,所以这不是一件容易的事。
2.使用导航计时API
PROS:这适用于页面加载 缺点:不适用于AJAX调用。 AJAX调用只是添加到整个页面加载时间,并且在Firefox中不能使用getEvents()调用来尝试手动计算ajax时间。
3.)使用浏览器MOB
PROS:可以围绕交易,而不仅仅是请求并以HAB格式保存。 缺点:我对此寄予厚望,但从浏览器的角度来看这些数字并没有报告,因此与(1)一样不准确。还存在创建代理服务器的设置开销,并且生成的HAB文件没有分解客户端/服务器响应时间。
4.。)Firefox和网络导出插件
PROS:很好的自动化解决方案 缺点:导出功能为每个请求创建一个新文件,但不能将多个请求聚合到一个事务中。也无法指定文件名,因此无法尝试读取只附加时间戳的文件。
5.)依靠"框架"响应时间。
PROS:至少在表面上看起来是准确的。 缺点:不能跨框架工作,因此不能被视为使用多个框架的繁忙生产站点的可扩展解决方案。
我没有尝试过的事情:
1。)Javascript注入
PROS:也许我可以将像回旋镖插件这样的javascript注入网站来测量响应时间。
缺点:可能很难,我担心通过我可能不知道或无法控制的页面事件而失去我的注射。
2.依赖HTTPWatch插件
PROS:似乎做我想做的事 缺点:没有Java插件,当我甚至不知道它是否适合我的需求时,我不知道我是否准备创建基于COM的集成层。我喜欢启动/停止交易的能力,而不是单个请求。
3。)YSlow,Google Page Speed和WebPageTest
PROS:无缝? 缺点:不起作用,因为我在防火墙后面,虽然我对他们如何附加请求很感兴趣。