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中的超链接。
<aid="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对象。表示一个单行的标准输入框。
<inputid="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对象。表示一个按钮
<inputid="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对象。表示一个选择框
<inputid="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对象。表示图像映射的一个区域(图像映射指的是带有可点击区域的图像)
<imgsrc="map/map.jpg"alt="校区地图"width="1004"height="601"border="0"usemap="#Map"/> <mapname="Map"id="Map"> <area shape="rect"alt="a1"coords="134,59,255,92"href="edushiMap.html" /> <areashape="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对象。表示一个下拉列表
<selectid="Select1"> <option>1</option> <option>2</option> </select> |
Watin操作<Select>元素的代码如下
ie.SelectList(Find.ById("Select1")).Select(string);//返回选择框的某项 |
<table>元素
<table>元素对应HTML DOM中的table对象。表示一个表格
<tablestyle="width:100%;"id="table1" class="class1"> <tr> <tdclass="style1"> 第1行第1列</td> <tdclass="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;//返回表格中项的数据 |