在使用QTP录制时,QTP会把对象存储到对象库中。而对象是按如上图的方式存储于对象库中。即,QTP会默认给录制的对象取一个名字(这个名字可以自己改,只要在脚本中使用到此对象时保持和此名字一样就可以了),然后把识别此对象的属性和属性值存储到对象库中,我们可以先把识别对象的属性集合认为是一个属性包,接着就是把识别此对象的属性包与定义的对象名进行关联,也叫做对象映射。这样一个对象就存入对象库了。
接着来说明QTP是如何调用这个对象的。例如,在“用户名输入框”中输入“a用户”,伪代码如下:
WebEdit(“用户名输入框”).Set “a用户” |
现在分析一下这个语句:
首先,QTP会通过“用户名输入框”这个名字到对象库的对象名中查找,会找到以下这个对象名:
然后通过找到的对象名,找到对象名映射的属性包,如下图:
接着QTP就会通过这个属性包来匹配页面上的控件的属性,如果在页面上找到一个唯一与此属性包匹配的控件,那QTP就会认为此控件为要找的控件。
然后QTP根据“WebEdit”来确定控件的类型,并调用QTP对于此类控件内置的操作方法“Set”把“a用户”赋予了控件。
至于其他控件的识别和操作,基本原理和上面一样。检验登录是否成功,也是通过比对登录成功后的页面特有的控件的属性值来判断。
QTP还提供描述性编程,从而可以不使用对象库,如在“用户名输入框”中输入“a用户”,可以使用以下伪代码:
WebEdit(“Html tag:=INPUT”,”Name=username”).Set “a用户”
细心的朋友可能已经发现,上面只是把识别对象的属性包中的属性和属性值按一定规则直接写到了“WebEdit()”的括号内了。这时QTP将不通过对象库,而是直接使用括号内的属性和属性值到页面上去找匹配项。然后操作与使用对象库的操作一样。
当然,QTP还提供了一些其他的功能,比如参数化,划分模块(Action)呀。但最重要的还是对象的识别。本次到此结束,希望对大家理解自动化能有所帮助。
版权声明:原创作品,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。本文出自chenyb85的51Testing软件测试博客:http://www.51testing.com/?130986