Web 测试实践 for .Net —WatiN

发表于:2011-8-11 11:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  测试对于一个应用系统来说是非常关键的,但纯单元测方式(XUnit)的方式在B/S结构的信息管理系统中仍然有一些不足,比如要测试界面元素,网页导行方面,就需要其它的一些测试架框作为辅助,这两天开始查找并学习了一些网站测试方面的框架。把学习心得发出来与大家工享。

  一、几种常用框架的介绍。

  1、NUnitAsp官方网址:http://nunitasp.sourceforge.net/

  优点:可以在测试代码中直接使用使用调用网页中的服务器控件。并获取该控件的属性。

  缺点:不够灵活。正如他的官方网上所说的:

  NUnitAsp主要是对后台代码进行单元测试,即它主要是用于测试服务端的逻辑,JavaScript和其它的客户端代码是被忽略的。

  2、WatiN官方网址:http://watin.sourceforge.net/

  优点:非常灵活,可以模拟用户在客户端浏览器中的大部份操作,API也比较简单。

  缺点:文档较少,官方网上的例子也很少。


  因为我的目的是测试网站里网页的导行,主要就是要模拟用户的操作,因此选择了使用WatiN。下面的内容也主要是讲述它的使用。

  二、最简单的例子

  下面先看一下官司方网站上给出的一个最简单的例子。

  [Test]
  publicvoidSearchForWatiNOnGoogle()
  ...{
  /**//*这一句代码会打开一个IE浏览器,打开www.google.com网址。
  *在创建军了IE对象以后也可以用ie.GoTo(url);来转到其它网址。
  */
  using(IEie=newIE("http://www.google.com"))
  ...{
  /**//*在浏览器中查找name属性为"q"的输入控件,然后调用它的TypeText方法
  *模拟用户用键盘输入"WatiN"
  *注意TypeText方法是真的模拟用户一个一个字母地输入进这个输入框的。
  *如果只是想设置该控件的内容可以把这句改为:
  *ie.TextField(Find.ByName("q")).Value="WatiN";
  */
  ie.TextField(Find.ByName("q")).TypeText("WatiN");
  ie.Button(Find.ByName("btnG")).Click();
  Assert.IsTrue(ie.ContainsText("WatiN"));
  }
  }

  这段代码的作用是模仿用户打开IE浏览器到GOOGLE网站查询WatiN的内容,然后确定有没有打到这些信息。

  三、WatiN里常用的类

  WatiN.Core.Find

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

  WatiN.Core.IE

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

  1.属性

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

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

  2.方法

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

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

  四、应用中的一些技巧

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

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

  方案:下面以一个具体例子为例。系统中有一个登陆界面:login.aspx登陆成功能后会调用JAVASCRIPT的.open方法打开系统的主窗口,然后关闭当前这个窗login.aspx。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号