如果只是简单的录制、回放脚本,可能感觉不到对象仓库的存在。但是要做到QTP脚本的结构化管理,就必须对QTP的对象仓库进行严格的管理。
1、Browser浏览器
2、Page页面
3、页面中的各种对象,比如Link、Button
1、每个Browser下的Page不要太多,最好不要超过5个,即使我们的系统都在同一个IE窗口下(没有弹出新IE),我们也可以分几个Browser管理,把业务上关联较强的几个Page放在一个Browser下;
2、每个对象都按照所代表的业务属性命名,最好用中文,不要出现一些难理解的字符,比如abc这样的。
3、尽量避免在一个tsr文件中堆放过多的对象,最好根据业务,把对象分为几个tsr文件保存。这里没有统一标准,以每个tsr文件结构清晰为宜。
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("购买结果")
最后再把上面那一行删除就可以了。