转帖地址:http://www.51testing.com/?uid-61753-action-viewspace-itemid-219958
概述
Watin 作为一个自动化测试 库 , 具有轻便 , 灵活的特点。而这都建立在对复杂操作封装的基础之上。 Watin 的原理和其它 web 自动化测试工具基本类似,就是通过操纵浏览器和 web 页面中的 DOM 对象来实现模拟用户操作网页。 Watin 封装了复杂的 DOM 操作并提供了大量的扩展,使对 web 网页的操作更灵活,更简便。本篇文章 并不能做到深入解析 Watin 具体的原理 , 内部架构,也没必要去深究。我们要做的就是以使用者的角度去分析如何使用 watin 并不断在工作 中完善。
HTML 元素与 Watin 类的映射
在介绍 watin 类和方法用途之前,大家最好对 HTML 元素与 watin 类的映射关系进行一个大体的了解。因为你在编写测试代码之前,首先是通过工具查看 web 页面中元素的信息,确定该元素的类型时候,通过映射关系才能确定使用 watin 中的哪个类。所以这个映射关系很重要。
详细的映射关系,请查看 映射表 。
Web 页面常用元素操作
介绍 Watin 如何对 web 页面中常见的一些元素进行操作。以及 watin 相关类和方法的介绍。在详细说明之前,首先创建一个页面,其中加入常用的页面元素 ( 比如 inpu,label 等 ) ,用来演示测试代码。具体代码见附件。
然后再介绍一下,在编写测试代码过程中常用的类和主要的方法。
Watin 中常用的类和方法
IE 类 : 最基础,最重要的一个类,用于访问 Web 页面中的元素以及操纵 IE 浏览器。
Goto( string): 导航到某个地址的网页。
Close() : 关闭浏览器
ContainsText(String): 是否包含指定的文本文字
CaptureWebPageToFile(string): 对当前 web 页截图并保存到指定位置
ClearCache(): 清除 Cache
ClearCookie(): 清除 Cookie
………
Find 类 : 也是必须用到的一个类,用于查找并定位 web 页面中的元素。
Byid() : 通过元素的 id 属性进行查找
Byname(): 通过元素的 name 属性进行查找
………
其它类和方法请详见 MSDN style. online documentation
Watin 对常用页面元素的操作
<A> 元素
<a> 标签对应 DOM 中的 Anchor 对象。表示 Html 中的超链接。
< a id ="baidu" href = "http://wwww.baidu.com"> 百度 </ a > |
Watin 操作 <a> 元素的代码如下
ie.Link(Find .Byid("baidu" )).Text;//返回超链接文字 ie.Link(Find .Byid("baidu" )).Url;//返回超链接的Url ie.Link(Find .Byid("baidu" )).Click();//点击超链接 |
备注:有些开发不规范的 web 页,有可能只有 href 属性存在的现象,这时只有通过 Find.ByUrl ( url )进行查找。
<input type="text"> 元素
<input type="text"> 元素对应 HTML DOM 中的 Text 对象。表示一个单行的标准输入框。
< input id ="Text1" type ="text" />欢迎!</ p > |
Watin 操作 <a> 元素的代码如下
ie.TextField (Find .Byid(" Text1 " )).Value;//返回输入框中的文字 ie.TextField (Find .Byid(" Text1 " )).TypeText("Watin" );//输入框中输入 ” Watin ” |
<input type="button"> 元素
<input type="button"> 元素对应 HTML DOM 中的 Button 对象。表示一个按钮
< input id ="btn" type ="button" />登录</ p > |
Watin 操作 <a> 元素的代码如下
Ie.Button (Find .Byid(" btn " )).Text;//返回按钮中的文字 ie.Button (Find .Byid(" btn " )).Click();//点击按钮 |
<input type="checkbox"> 元素
<input type="Checkbox"> 元素对应 HTML DOM 中的 Checkbox 对象。表示一个选择框
< input id ="chk" type ="checkbox" />勾选</ p > |
Watin 操作 <a> 元素的代码如下
Ie.CheckBox (Find .Byid(" chk " )).Text;//返回选择框的文字 ie.CheckBox (Find .Byid(" chk " )).Click();//点击选择框 ie.CheckBox (Find .ById(" chk " )).Checked =true ;//设置Checkbox的勾选状态 |
<area> 元素
<area> 标签对应 HTML DOM 中的 area 对象。表示图像映射的一个区域(图像映射指的是带有可点击区域的图像)
< img src ="map/map.jpg" alt ="校区地图" width ="1004" height ="601" border ="0" usemap ="#Map" /> < map name ="Map" id ="Map"> < area shape ="rect" alt ="a1" coords ="134,59,255,92" href ="edushiMap.html" /> < area shape ="rect" alt ="a2" coords ="345,122,464,160" href ="edushiMap.html" /> </ map > |
Watin 操作 <area> 元素的代码如下
ie.Area(Find .ByAlt("a1" )).Url;//返回area区域的url ie.Area(Find .ById("area1" )).Click();//点击area区域 ie.Area(Find .ByAlt("a1" )).Click();//点击area区域 |
<Select> 元素
<Select> 元素对应 HTML DOM 中的 Select 对象。表示一个下拉列表
< select id ="Select1"> < option > 1</ option > < option > 2</ option > </ select > |
Watin 操作 <Select> 元素的代码如下
ie.SelectList(Find .ById("Select1" )).Select(string);//返回选择框的某项 |
<table> 元素
<table> 元素对应 HTML DOM 中的 table 对象。表示一个表格
< table style =" width :100% ;" id ="table1" class = "class1"> < tr > < td class ="style1"> 第1行第1列</ td > < td class ="style1"> 第1行第2列</ td > </ tr > < tr > < td > 第2行第1列</ td > < td > 第2行第2列</ td > </ tr > </ table > |
Watin 操作 <table> 元素的代码如下
ie.Table(Find .ByClass("class1" )).TableRows[0].TableCells[1].Text;//返回表格中项的数据 |