ajo*_*joe 4 performance automation headless internet-explorer-7
我需要监控我的网站渲染时间以执行常见任务(登录,搜索等).我需要一些自动化的东西,它可以模仿IE上的用户操作,并能够有时间渲染页面.
示例自动执行:
1)打开无头IE浏览器
3)输入"stackoverflow"
4)按提交按钮
5)启动计时器
6)等待结果页面完全呈现
7)停止计时器
8)关闭IE
9)记录结果
我需要这个在服务器上作为计划任务运行,而无需用户登录.
我一直在寻找帮助我这样做的东西.任何人都有这种类型的经验或知道任何可以做到这一点的事情?
Mar*_*ann 11
这取决于您的重点,功能或性能.
监控功能时,您的目标是自动确保Web应用程序仍能正常运行.通常,这是持续集成过程的一部分 - 而不是生产监控的一部分.使用HtmlUnit,Selenium或WebDriver可以很好地完成它.不再推荐使用HttpUnit(API更低级,JavaScript不太受支持,不太广泛采用,错误修复和增强更少).
HtmlUnit模拟浏览器.因此,您永远无法确定您的应用程序在真实浏览器中的行为完全相同.这对于复杂的Ajax应用程序尤为重要.这与FireFox和Internet Explorer之间的所有小不兼容性相当.优点:无头,易于理解.缺点:未检测到不兼容的风险.
Selenium远程控制真正的浏览器.在我们的设置中,我们无法无头地使用它,尤其是在Internet Explorer中.但如果你将它嵌入虚拟机中,它会无头地运行.如果您的应用程序可通过公共互联网访问,您甚至可以使用Selenium Grid和Amazon Elastic Cloud EC2中的预配置虚拟机.Selenium的优点:真实世界的兼容性,易于编写脚本.缺点:仅在虚拟机中无头,性能开销,更复杂的运行时设置,仅在云中对并发用户进行压力模拟.
最高版本1.5,Selenium使用名为Selenium Core的JavaScript部件来控制浏览器.如果您的应用程序对JavaScript有安全限制,则Selenium可能无法正常运行.
WebDriver为每个浏览器使用特定的界面,例如FireFox的扩展和Internet Explorer自动化控件.另外,它使用操作系统,例如用于模拟击键.这比Selenium Core更强大,更强大,更可靠.从Selenium 2.0版开始,WebDriver被集成到Selenium中.但Selenium 2.0仍处于测试阶段.
你提到用计时器测量,你提到渲染时间.监视Web应用程序的性能时,如果由于应答时间过长而无法再对应用程序进行实际使用,则需要提醒您.
在这种情况下,您通常不会对精确结果感兴趣(以毫秒为单位).您仍然可以使用上面提到的工具之一.例如,使用Selenium Core的浏览器比实际浏览器慢 - 但这与连续监控无关.
如果您绝对需要精确测量,则以上都不适用.您应该区分客户端持续时间和网络加服务器端持续时间.
需要客户端持续时间来呈现HTML和执行JavaScript.它不依赖于并发用户的数量.您可以测量一次,例如使用Firebug.您无需永久监控它.
需要网络加服务器端持续时间来将请求传输到服务器,处理请求并生成响应并将响应传输到客户端.它们根据网络使用情况和并发用户数而有所不同.您可以使用JMeter精确测量和监控它们.但是在复杂的Ajax功能的情况下,在JMeter中模拟正确的客户端请求是一项复杂的任务.JMeter的优点:精确的测量,可能会给许多并发用户带来压力.缺点:对于Ajax有限,请求建设需要付出很多努力.