【软件测试自动化-QTP系列讲座 32】== 对象封装属性的真正源头 ==

看过我第二章讲座的朋友应该都明白什么是封装属性,以及封装属性与接口属性的区别

  • 【软件测试自动化-QTP系列讲座 2】 == 对象库及原理透析 ==

http://blog.csdn.net/zzxxbb112/archive/2009/08/27/4489342.aspx

大家都知道,我们平时需要查看对象的封装属性可以打开spy,然后选择我们需要查看的对象,SPY中即会显示出此对象的属性。

1

图中我们可以看到在identification properties下有很多属性,这些属性就是QTP的自己封装的一些属性。同时这些属性我们可以通过GetROProperty方法进行访问。

msgbox Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("name")

这里我们访问一下NAME属性,我们可以看到它的值为wd

2

然后我们执行下脚本,会弹出以下对话框

3

那既然在SPY中所有的属性都能访问,那我们再来看一个脚本

msgbox Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("Class Name")

访问下Class Name属性看看是不是能够获得值:WebEdit

4

执行完脚本后我们可以看到弹出的内容为空。这是为什么?

其实因为QTP封装此属性的名称不是这个,其实应该是micClass

msgbox Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("micclass")

执行以上语句就可以得到我们想要的结果

5


大家肯定会问为什么是micClass,而不是Class Name呢?

别急,答案很快就会告诉大家~

首先我们打开注册表运行regedit

进入到HKEY_CURRENT_USER -> software -> Mercury Interactive -> QuickTest Professional -> MicTest -> Attributes

这个目录下,当我们展开Attributes这个目录时我们会看到很多我们熟悉的属性,没错这里面包含了所有的QTP的封装属性。

6

在此目录下我们可以找到micClass属性,而Class Name属性是没有的,所以刚才我们打印出来是空的就是这个原因。

7


还有很多QTP隐藏的属性,并且一部分属性在QTP的所有帮助文档中都没有提到。

这里我们就随便找一个QTP spy中没有的属性来试试,我们这里以source_index为例

index = Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").GetROProperty("source_index") Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("source_index:=" & index).Set "zzxxbb112"

执行以上脚本我们可以看到百度搜索框成功输入了zzxxbb112,原理主要是通过source_index获取对象的索引,并通过描述此属性并成功对此对象进行控制。在这个目录下我们还可以看到一些平时我们所常用一些隐藏属性,例如creationtime,index等,还有很多我们从来没有看到过的属性,有兴趣的朋友可以一个个试试。

注意:

每个属性都是有对应的对象的,比如creationtime属性只能用在Browser对象上,这点是需要大家注意的。