• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

使用.net开发Web自动化测试工具

发布: 2009-7-07 12:14 | 作者: 网络转载 | 来源: 领测软件测试网 | 查看: 354次 | 进入软件测试论坛讨论

领测软件测试网 前段时间,由于测试需要,使用C#结合WatiN组件,开发了一个小小的web自动化测试工具。

  WatiN 是一个非常简单灵活的测试框架,可以模拟用户在客户端浏览器中的大部份操作,API也比较简单。

  一、实现url调用和web控件的控制很简单,参考下面代码:

  请 for (int i = 0; i < txtUrls.Length; i++)

  {

  try

  {

  WatiN.Core.DialogHandlers.AlertDialogHandler dh = new WatiN.Core.DialogHandlers.AlertDialogHandler();

  using (IE ie = new IE(txtUrls[i])) //调用URL,txtUrls[i]为Url地址

  {

  ie.AddDialogHandler(dh);//增加一个控制句柄

  ie.CheckBox("cblSets_6").Checked = false;

  ie.CheckBox("cblSets_8").Checked = true;

  ie.Button("btnSave").ClickNoWait(); //执行保存

  ie.RemoveDialogHandler(dh);

  ie.Close();

  }

  }

  catch (Exception e)

  {

  sb.Append("Execute Err:").Append(txtUrls[i]).Append(";");

  }

  }

  二、WatiN 里常用的类

  WatiN.Core.Find

  最普遍使用的类就是Find类的,它是一个工厂类,主要使用它的静态方法来实现一些查询条件。比如像上面的例子中的这个语句“ie.Button(Find.ByName("btnG")).Click();”就调用了Find的静态方法ByName来查询一个name属性为指定值的HTML元素,然后再调用IE对象的Button方法把这个元素转换为按钮对象。

  WatiN.Core.IE

  这应该是最关键的类了。他常用的方法是和属性为

  属性

  HtmlDialogs 返回当前对象用JavaScript打开的模式窗口(需然帮助文档中说非模式窗口也包括在内,但在试用中发现用window.open打开的窗口没有被)

  Frames 返回当前的象里的所有Frames

  方法

  静态方法 AttachToIE 与一个已经找开的IE关连。

  Button,TextField,Image,Div 等一系列方法。与Find对象共同使用用于返回IE中特定的按钮,输入框,等HTML元素。

  三、应用中的一些技巧

  1、如何去捕获一个新弹出的窗口。

  背景:有些链接是从一个新弹出的窗口中打开的,我如果关连上这类型的窗口。

  public void Login(string uid, string passwd)

  {

  string url = Host + "frmlogon.aspx";

  ie = new IE();

  ie.GoTo(url);

  ie.WaitForComplete();

  ie.TextField(Find.ById("txtUserName")).Value = uid;

  ie.TextField(Find.ById("txtPwd")).Value = passwd;

  ie.Button(Find.ById("btnLogin")).ClickNoWait();//这个方法改成这样,那点击后就不会等代码IE完成了。

  //下面这句就是处理登陆的技巧所在,系统打开了另一个窗口。

  //下面这句就是用正则表达式捕获这个窗口。

  ie = IE.AttachToIE(Find.ByTitle(new WatiN.Core.Comparers.RegexComparer(new System.Text.RegularExpressions.Regex(".*自动化测试.*"))));

  ie.WaitForComplete();

  MainFrame. = ie.Frame(Find.ByName("MainFrame_00001"));

  MenuFrame. = ie.Frame(Find.ById("leftMenu"));//把系统里的Frame先保存下来。

  }

  2、对于alert 、confirm 等javascript弹出的窗口的捕获。

  背景:一个系统经常会使用以上这些javascript来弹出一些提示信息,如果捕获这些窗口,并模拟用户点击这些窗口上的OK或Cancel按钮?

  方案:其实WatiN在默认情况下,都会自动地去点击这些弹出式窗口上的Cancel按钮的,但如果用户要明确点击哪些事件的话可以对IE对象增加一个“查看器”()

  protected void f()

  {

  WatiN.Core.DialogHandlers.ConfirmDialogHandler dh = new WatiN.Core.DialogHandlers.ConfirmDialogHandler();

  ie.AddDialogHandler(dh);

  doc.Button(Find.ByName("yzp_dic_btn_cls")).ClickNoWait();//把原来的Click改成这个方法。

  dh.WaitUntilExists(3);//等待弹出窗口的出来。最多等三秒。

  dh.OKButton.Click();//点击这个窗口的OK按钮

  ie.RemoveDialogHandler(dh);

  doc.Button(Find.ByName("btn_close")).Click();

  }

  3、关于用JS弹出的Modal窗口(模式窗口)的处理。

  背景:有些地方需要弹出模式窗口来处理数据。

  方解:当点击了弹出模式窗口的按钮或连接后马上用IE对像的HtmlDialogs属生来获取模式窗口。

  protected void f()

  {

  //假设下面这行代码会弹出一个模式窗口把原来的Click改成这个方法。

  //记住这里要用ClickNoWait而不能用Click,否则在模式窗口关闭之前代码不会继续执行。

  ie.Button(Find.ByName("yzp_dic_btn_cls")).ClickNoWait();

  ie.HtmlDialogs[ie.HtmlDialogs.Length - 1].TextField(Find.ByName("Q")).Value = "Hello";

  ie.HtmlDialogs[ie.HtmlDialogs.Length - 1].Button(Find.ByName("btn_query")).Click();

  WatiN 官方网址:http://watin.sourceforge.net/可以在上面下载组件。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: web Web WEB 工具 开发 自动化


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网