在进行软件测试时手工编写QTP测试脚本方法
这里可能有人会问, QTP 的录制功能不是很强大么,为什么还要自己手写脚本,这样是不是更麻烦。我先说一下我对手写 测试 脚本的感受,供大家参考。首先,如果我们整理好对象仓库,再录制脚本,QTP就会又自动生成一批新的对象,命名很乱,再修改替换太费事;其
这里可能有人会问,
QTP的录制功能不是很强大么,为什么还要自己手写脚本,这样是不是更麻烦。我先说一下我对手写
测试脚本的感受,供大家参考。首先,如果我们整理好对象仓库,再录制脚本,QTP就会又自动生成一批新的对象,命名很乱,再修改替换太费事;其次,录制脚本的过程如果出现问题,再重来,很麻烦;最后,也是最重要的,手写脚本时思路非常清楚,而且写完再运行,感觉非常好,呵呵。
与编写脚本相比,脚本的维护工作同样很重要,而且维护脚本一般都是直接修改脚本,并不会去重新录制,所以开始的时候就用手写的方式,维护起来就会更轻松。
编写QTP脚本其实是比较简单、快速的。我们首先创建一个Test,然后把所有相关对象仓库的tsr文件和
vbs文件添加到这个Test里面,下面就可以开始写了。写脚本大致会遇到这么几种情况:
1、调用vbs函数
2、调用其他Test
3、打开指定的URL
4、操作页面Page上的控件
5、添加CheckPoint
6、其他逻辑运算
我们分别讲一下。调用vbs函数比较简单,直接Call [函数名]。如果要调用其他的Test,那么首先点击Call to Existing Test,然后在
QC中选择一个可以复用的Test,例如登录。如果登录的Test有参数,那么可以这样写:
RunAction \"Action1 [login]\", oneIteration , \"张三\"
下面的脚本要操作对象仓库了。我们先写出“Browser(”,这时就会发现,对象仓库里面的Browser对象都列了出来,然后我们选择需要的那个B对象就好。我们先从打开指定URL的脚本开始讲,打开指定的URL使用的机会比较多,特别是在Test的开始。一般我们这样写
Browser(\"登录\").Navigate \"指定的URL\"
这里的“登录”是一个Browser对象,一般我们要选业务上符合的B对象。写完这句以后要再写:
Browser(\"登录\").Page(\"登录首页\").Sync
这句的意思是等待“登录首页”这个Page加载完毕,注意不要用Wait几秒这种方式来等待页面加载结束。
操作Page的对象是比较简单的,由于控件的类型太多,比如下拉菜单WebList、文本输入框WebEdit、按钮WebButton,这里就不一一说明了,大家看下面的一些例子吧:
Browser(\"购买直充\").Page(\"购买直充\").WebList(\"
游戏区\").Select 1
Browser(\"购买直充\").Page(\"购买直充\").WebEdit(\"PlayerName\").Set \"abc\"
Browser(\"购买直充\").Page(\"购买直充\").WebEdit(\"PlayerNameAgain\").Set \"abc\"
Browser(\"购买直充\").Page(\"购买直充\").WebEdit(\"CheckCode\").Set \"8888\"
Browser(\"购买直充\").Page(\"购买直充\").Image(\"Submit\").Click
如果遇到问题,不知道怎么写,可以先用录制的方式,生成一些脚本,然后仿照脚本写就可以了。另外在Page下面有可能会有Frame对象,这个没关系,就像这样写即可:
Browser(\"我的直充\").Page(\"我的直充\").Frame(\"直充入口\").Image(\"立即直充\").Click
添加CheckPoint要稍微复杂一些,比如说我们要检查Page上的一个WebElement的显示字符是否正确,那么首选要把这个WebElement完整的写在Test里面,这一句后面需要删除:
Browser(\"购买直充\").Page(\"购买直充\").WebElement(\"购买结果\").Click
然后右击这一行脚本,选择Insert Standard CheckPoint,在弹出的CP属性窗口,设置CP的细节。确认后脚本就会自动生成一行:
Browser(\"购买直充\").Page(\"购买直充\").WebElement(\"购买结果\").Check CheckPoint(\"购买结果\")
最后再把上面那一行删除就可以了。
其他的逻辑运算,例如循环、判断,请参考vbs脚本语法,这里不说了。
总之,手动编写QTP脚本有很多好处,我在尝试了录制和手写两种方式之后,最终选择了手写的方式,大家不妨也试试,特别是对编码有兴趣的朋友。
原文转自:http://www.ltesting.net