Watin与Httpwatch工具结合进行测试
上一篇 / 下一篇 2010-09-14 23:41:01 / 天气: 阴雨 / 心情: 郁闷 / 个人分类:WatiN
概述
Httpwatch是一款强大的网页数据分析工具,安装后集成在IE和Firefox工具栏中。它可以在不改变浏览器和网络设置的基础上捕捉Http和Https数据。查看底层的HTTP数据,包括headers,cookies,cache等等,同时统计发送接收请求的时间,并提供完备的日志记录系统。同时该款工具具有完备的COM接口,用于给用户通过编程的方式操纵httpwatch。
Httpwatch自动化对象介绍
Httpwatch自动化对象的结构如下:
Controller类
Controller类总是控制的起点,它用于创建Httpwatch插件接口或者读取log文件,通过IE属性和Firefox属性的new()方法或者Attch()方法返回Plugin实例对象
Plugin类
Plugin类是Httpwatch与浏览器交互的接口。它提供了方法用于开始和停止http流量的记录。还有很多方法和属性用于管理Httpwatch的日志文件和配置自动化记录。
Log类
Plugin对象的Log属性是Log对象的入口。它包含了一系列通过Httpwatch记录的日志。Log对象中具有很多重要的类,比如Pages,Entries类。
Entry类
每个Log对象都包含一组Entry对象,它代表的是单个HTTP事务的详情。(比如http请求)
后面我们会通过实例来进一步说明该类的方法和属性。
通过把Watin和Httpwatch结合进行自动化测试,可以很大程度的扩展自动化测试的范围,比如在自动化测试过程中验证链接的连通性,网页传输的速率和时间,查看网页的详细信息等等。
使用C#操作Httpwatch
使用C#操纵httpwatch大致分为以下几个步骤:
1) 添加HTTPwath自动化类库到你的项目中
2) 创建与Httpwatch工具的联系
创建新的IE接口
HttpWatch.Controller controller =newHttpWatch.Controller(); HttpWatch.Plugin plugin = controller.IE.New(); |
创建新的Firefox接口
HttpWatch.Controller controller =newHttpWatch.Controller(); HttpWatch.Plugin plugin = controller.Firefox.New(""); |
附加一个已存在的IE窗口
SHDocVw.IWebBrowser2 ieBrowser =newSHDocVw.InternetExplorer(); ieBrowser.Visible =true; // Required to see the new window . . . HttpWatch.Controller controller =newHttpWatch.Controller(); HttpWatch.Plugin plugin = controller.IE.Attach(ieBrowser); |
附加一个已存在的Firefox窗口
HttpWatch.Controller controller =newHttpWatch.Controller(); HttpWatch.Plugin plugin = controller.Firefox.Attach("FirefoxProfileName"); |
3) 通过接口读取HTTP详细信息
plugin.Log.Save("E:\\baidu.hwl"); foreach(HttpWatch.Pagepageinplugin.Log.Pages) { Console.WriteLine(page.Title);//输出网页的标题 } |
Watin与Httpwatch结合
我们依然以访问百度网站为例,并进行查询操作.最后输出访问过程中HTTP请求各个资源的时间和状态。我们可以加入判断,判断哪些请求的状态有异常,哪些请求的时间过长。(请使用IE6,IE7好像有些问题)具体代码如下:
using System.Collections.Generic; using System.Linq; using System.Text; using WatiN.Core; namespace ConsoleApplication1 { class Program { [STAThread] static void Main(string[] args) { //新建IE实例 IE ie = new IE(); //建立Httpwatch控制类 HttpWatch.Controller controller = new HttpWatch.Controller(); //将ie实例附加到Httpwatch接口,从而使Watin和httpwatch与同一IE建立关联 HttpWatch.Plugin plugin = controller.IE.Attach((SHDocVw.IWebBrowser2)ie.InternetExplorer); //Httpwatch开始记录 plugin.Clear(); plugin.Record(); //导航到百度 ie.GoTo("www.baidu.com"); //搜索“watin” ie.TextField(Find.ById("kw")).TypeText("Watin"); ie.Button(Find.ById("su")).Click(); //停止httpwatch记录 plugin.Stop(); //创建Log实例 HttpWatch.Log log = plugin.Log; //输出请求异常的url Console.WriteLine("请求异常的地址:"); foreach (HttpWatch.Page page in log.Pages) { Console.WriteLine("------------"+page.Title+"--------------"); foreach (HttpWatch.Entry entry in page.Entries) { if (entry.Result != "200" & entry.Result != "(Cache)") { Console.WriteLine(entry.URL + " : " + entry.Result); } } } Console.WriteLine("\r\n\r\n"); //输出请求超过0.1s的url Console.WriteLine("请求超过0.1s的地址:"); foreach (HttpWatch.Page page in log.Pages) { Console.WriteLine("------------" + page.Title + "--------------"); foreach (HttpWatch.Entry entry in page.Entries) { if (entry.Time > 0.1) { Console.WriteLine(entry.URL + " : " + entry.Time + "s"); } } } Console.ReadLine(); } } }
|
结果显示如下:
结束语
我在本篇文章中只是列举了httpwatch的一些简单应用,有对http信息分析有更深入需求的可以参考HttpWatch Automation Reference,进一步了解httpwatch的自动化对象。
资源及资源
1. Httpwatch官网
2. Using HttpWatch with WatiN
来源:http://www.51testing.com/html/53/61753-220148.html