• WatiN和HttpWatch交互简介


    Httpwatch是一款强大的网页数据分析工具,它可以在不改变浏览器和网络设置的基础上捕捉http和https数据。查看底层的http数据,包括headers, cookies, cache等,同时统计发送接收请求时间,并提供完备的日志记录系统。同时该工具具有完备的COM接口,用于给用户通过编程的方式操纵httpwatch.

    Httpwatch 自动化对象介绍:

    Controller 类:总是控制的起点,它用于创建httpwatch插件接口或读取log文件,通过IE属性和Firefox属性的new()方法或者Attach()方法返回Plugin实例对象。

    Plugin 类:是httpwatch与浏览器交互的接口。提供了方法用于开始和停止http流量的记录,还有很多方法和属性管理httpwatch的日志文件和配置自动化记录。

    Log 类: Plugin对象的Log属性是Log对象的入口。包含了一系列通过httpwatch记录的日志。Log对象中具有很多重要的类,比如Pages, Entries类。

    Entry 类: 每个Log对象都包含一组Entry对象,它代表的是单个HTTP事务的详情(比如http请求)

    通过 WatiN和httpwatch结合进行自动化测试,可以很大程度扩展自动化测试的范围,比如在自动化测试过程中验证链接的连通性,网页传输速率和时间,查看网页的详细信息等。

    C#操作httpwatch

    1. 添加httpwatch自动化类库到项目中
    2. 创建与httpwatch工具的联系

        创建新的IE接口:顶部添加引用  using HttpWatch;

    1             Controller control = new Controller();
    2             Plugin plugin = control.IE.New();
    View Code

        创建新的Firefox接口:

    1             Controller control = new Controller();
    2             Plugin plugin = control.Firefox.New();
    View Code

        附加一个已存在的IE窗口:

    1             SHDocVw.IWebBrowser2 ieBrowser = new SHDocVw.InternetExplorer();
    2             ieBrowser.Visible = true;  //Required to see new window
    3             Controller control = new Controller();
    4             Plugin plugin = control.IE.Attach(ieBrowser);
    View Code

        附加一个已存在的Firefox窗口:

    1             Controller control = new Controller();
    2             Plugin plugin = control.Firefox.Attach(firefoxBrowser);
    View Code

      3. 通过接口读取http详细信息

    Example:

     1         public static HttpWatchInfo RunHttpWatch(string url)
     2         {
     3             Controller control = new Controller();
     4             Plugin plugin = control.IE.New();
     5 
     6             plugin.Log.EnableFilter(false);
     7             plugin.Record();
     8             plugin.GotoURL(url);
     9             control.Wait(plugin, -1);
    10             plugin.Stop();
    11 
    12             HttpWatchInfo httpWatchSummary = new HttpWatchInfo();
    13             if (plugin.Log.Pages.Count != 0)
    14             {
    15                 Summary summary = plugin.Log.Pages[0].Entries.Summary;
    16                 httpWatchSummary.URL = url;
    17                 httpWatchSummary.Time = summary.Time;
    18                 httpWatchSummary.RoundTrips = summary.RoundTrips;
    19                 httpWatchSummary.BytesReceived = summary.BytesReceived;
    20                 httpWatchSummary.BytesSent = summary.BytesSent;
    21                 httpWatchSummary.CompressionSavedBytes = summary.CompressionSavedBytes;
    22 
    23                 IList<string> codes = new List<string>();
    24                 for (int i = 0; i < summary.StatusCodes.Count; i++)
    25                     codes.Add(summary.StatusCodes[i].Result);
    26                 httpWatchSummary.StatusCode = codes;
    27 
    28                 IList<HttpWatchDetail> httpWatchDetail = new List<HttpWatchDetail>();
    29                 for (int i = 0; i < plugin.Log.Entries.Count; i++)
    30                 {
    31                     HttpWatchDetail detail = new HttpWatchDetail();
    32                     detail.URL = plugin.Log.Entries[i].URL;
    33                     detail.Result = plugin.Log.Entries[i].Result;
    34                     detail.Time = plugin.Log.Entries[i].Time.ToString();
    35                     detail.Error = plugin.Log.Entries[i].Error;
    36                     try
    37                     {
    38                         detail.Content = plugin.Log.Entries[i].Content.Data;
    39                     }
    40                     catch
    41                     {
    42                         detail.Content = null;
    43                     }
    44                     httpWatchDetail.Add(detail);
    45                 }
    46                 httpWatchSummary.Details = httpWatchDetail;
    47             }
    48             plugin.CloseBrowser();
    49             return httpWatchSummary;
    50         }
    View Code
    作者:Ribbon 出处: http://www.cnblogs.com/Ribbon/ 本文版权归作者和博客园共有,欢迎转载。未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
  • 相关阅读:
    forEach 获取下标信息
    js select选择框回显 当value是汉字时
    java 大写字符串字符串转成小写驼峰格式
    关于too many open files解决方案
    mysql 判断区间是否存在交集和并集
    http 请求拼接多个请求参数
    Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project jic-member: There are test failures.
    用dubbo时遇到的一个序列化的坑 xxxServiceImpl must implement java.io.Serializable
    django的分页器
    Django-form组件和ModelForm组件
  • 原文地址:https://www.cnblogs.com/Ribbon/p/4341866.html
Copyright © 2020-2023  润新知