一般的界面测试工具对自动化的实现都分以下几步:
- 识别被测控件(对象),并保存被测控件的特征至对象库,一般通过抓取控件或者直接录制实现
- 在回放时,工具通过保存好的控件特征去寻找合适的控件,特征可能包括属性,类型,也可能包括路径
- 当寻找到唯一的合适控件是执行相应的操作
RFT也是这样进行工作的,如何识别控件是使用每一个自动化测试工具的必修课。我将会分几个小节从几个方面由浅入深地分析RFT是如何识别界面上的一个个控件。
这一节主要介绍通过RFT手动抓取控件至对象库。
在介绍之前,先解释几个关键词,这样也方便大家的沟通:
被测系统 指的就是需要测试系统,文章大多的例子都会以baidu、google为例,所以他们就是被测系统
控件 指的就是界面上一个一个元素,比如按钮,菜单,下拉框,表格等等,甚至包括IE本身
对象(Test Object) RFT把控件以对象的形式进行封装,让用户有操作对象就是操作控件的感觉
对象库(Test Object Map) RFT把控件识别成对象之后存在在一个个对象库,进行保存。用户一般通过对象库来管理对象
本节先这几个,后面有需要再补充
回到正题:抓取控件
RFT支持两种抓取控件的方法,一个是在脚本里抓取控件,另一个是在对象库里抓取控件。
在脚本里抓取控件
目的:抓取Google首页的“Google Search”的按钮
- 在IE里面打开Google首页,打开RFT
- 创建一个空的脚本,全部使用默认参数
- 创建成功后在有侧Script视图里面,右键点击Test Objects选择Insert Test Object,会弹出一个Insert a GUI into the Object Map的窗口
- 点击Object Finder的按钮,并不放开鼠标,这时鼠标会变成手型,将鼠标拖至Google页面的Google Search按钮等到按钮的边框标志成红色说明RFT已经确认识别该按钮后松开鼠标
- 这时Insert a GUI into the Object Map的窗口下方会出现该按钮的一些属性值,比如value值是Google Search, type是submit等等。
- 点击Finish完成
这时控件按钮已经以对象的方式被加入刚刚创建的空脚本及其对象库,并且会有一个默认逻辑名字‘button_googleSearchsubmit’,方便用户在脚本里面使用:
比如上面的就是点击该按钮的代码,同时我们还可以在Script视图里面修改这个逻辑名字。
在对象库里抓取控件
目的:抓取Google首页的“I‘m Feeling Lucky”的按钮
- 每一个脚本都会持有至少一个对象库,所以在我们上一个例子的脚本里面本身也持有一个对象库
- 在脚本右边Script视图里面,展开Test Objects,然后双击Private Test Object Map
- 弹出‘Private Test Object Map for Script RFT_03_001’的窗口,展开中间的树桩结构,你可以看到刚才识别的按钮在树的最下端,同时下面显示这个按钮/对象的一些属性值
- 点击上面菜单中的Test Object,然后在下拉菜单选择Insert Object(s)
- 弹出一个Insert a GUI into the Object Map的窗口后,下面的操作和上面的方法一样
总结和比较
这两种方法主要有两个不同之处:
- 在脚本里面抓去控件,每次都只能一次,但是通过对象库则一次可以抓取多个,甚至整个界面上的所有控件(如图 RFT_3_006)
- 通过对象库抓的控件是不能直接应用于脚本,需要将该控件添加到脚本(操作如图RFT_3_008)