一、几种常用框架的介绍。
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。