== 对象封装属性的真正源头 ==

32 篇文章 1 订阅

http://blog.csdn.net/zzxxbb112/article/details/4489342

http://blog.csdn.net/hyholine/article/details/7218067

 首先在qtp中打开spying对话框可以发现两个选项卡,一个是Native Properties,一个是Identification Proterties

Native Properties是本地属性,Identification Proterties是QTP自己封装的属性,这些属性的封装信息可以在QTP注册表中发现(Mercury Interactive->QuickTest Professional->MicTest->Attributes)

 

QTP整这么一个Native Porperties 和 Native operations,基本原则是多一个不如少一个,反正用户都是功能多多益善。但是实际工作中我认为会用到的很少吧。重点关注Identification Properties 和 Test object operations 就可以了。因为我们在对页面对象的识别操作无非关心对象的属性和方法。有时忘记了某个对象的属性和方法可以通过sky提供这个功能的查找(特别是用描述性编程和调试脚本的时候)。

下面就是说的Identification 属性:

SetTOProperty:修改对象库中对象的属性值,GetROProperty用法和GetTOProperty是一样的,只不过一个是运行对象属性,而一个是对象库中的属性

细分的朋友应该会发现既然有获取对象库中对象属性,修改对象库中对象属性,获取运行时对象的属性。

为什么没有SetROProperty修改运行时对象的属性呢~

 

因为这个方法可以直接使用调用对象【object.属性值】的自身接口来修改运行对象的属性~

如:

  1. Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Object.size="1"  

那这里的运行时对象和测试对象又是什么呢?他们之间又存在着什么样的关系呢?

测试对象(TO):是QTP在脚本中创建的用于描述应用程序实际对象的对象.QTP存储这些信息用来在运行时识别和检查对象.简单的说,我们就可以把对象库中所保存的对象就看做为测试对象.

运行时对象(RO):是应用程序中的实际对象,对象的方法将在运行时被执行.

 

两者之间的关系:测试对象是为了识别运行时对象而存在的.在《QTP的录制回放过程》中,我也阐述了QTP的整个工作原理。所以这里我也就简单的再提一下。QTP在录制的时候会把所操作的对象的一组属性及属性值,保存到对象库中,就是所谓的测试对象。在回放的时候,QTP 就会根据对象库里的该对象的属性及属性值去匹配实际在应用程序中的运行时对象。一但完全匹配正确就执行相应的操作。否则就会报“找不到该对象”的错。

 

大家都知道,我们平时需要查看对象的封装属性可以打开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对象上,这点是需要大家注意的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值