QTP对象识别原理之我见

来源:互联网 发布:一键加群软件 编辑:程序博客网 时间:2024/06/01 09:20

        在讨论这个话题之前,先让我们思绪抽回1800年前。

        这里是烽火连天三国时代,曹操马超大战潼关。乱军丛中,曹操望风而逃,马超在后面大喊:“穿红袍曹操!”,曹操听到后立马红袍。随后又听到大喊:“长胡子曹操!”,曹操大惊,割掉了自己的胡子。马超知道后,大喊:“短胡子是曹操!”……

       为什么要先说这么一段故事呢,其实这段故事某些地方QTP对象识别原理非常相似。

  • TORO,记忆现实

        首先,我们知道,QTP对象两个概念,一个是Test Object (TO对象库对象,另一个是Run-time Object(RO运行时对象,并且有四个非常重要TO、RO相关函数:

        GetTOProperty() —— 获取对象库对象某个属性值

        GetTOProperties() ——获取对象库对象所有属性

        SetTOProperty()  —— 设置对象库对象某个属性值

        GetROProperty() —— 获取运行时对象某个属性值

        这些起来好像很抽象,其实QTP识别对象我们人脑识别各种事物有着异曲同工之妙。 通常情况下,我们识别一个人,脑海首先会有一些基本印象,比如,性别、外貌、身高、声音等等,QTP对象库对象(Test Object就好比大脑记忆,性别、外貌、身高因素就是这个对象属性。知道了对象库对象概念后,运行时对象其实也很好理解了,运行实际对象,好比一个真实人,而不是记忆中那个人,因为这两者毕竟还是有一定区别的。

       有了对象这些属性就能够识别这个对象吗?答案是否定的。因为这些属性有些不是强制属性,临时变化的。就像文章刚开始时那段故事一样,第一次,马超率领西凉兵,曹操印象是“穿红袍”,士兵带着“战袍颜色 =这个很容易变化辅助属性识别曹操,狡猾曹操知道后立刻改变这个属性,结果造成西凉兵识别不能;第二次,马超用了一个SetTOProperty()方法改变士兵们脑海中记忆告诉士兵们:“胡子很长那个曹操!”,于是西凉兵带着“胡子长度 = 这个辅助属性识别曹操,谁知曹操又一次巧妙地改变了自己的胡子属性,再一次使西凉兵识别不能;第三次,马超又用一个SetTOproperty() 方法长胡子改成了短胡子,哈哈,要知道胡子易,变长难,西凉兵根据“胡子长度 = 这个属性成功匹配曹操这个象,看来曹操这次是真的逃不掉了!

  • 强制属性、辅助属性顺序标识

        还是我们人脑识别比方,下面列出了一些关于识别强制属性辅助属性顺序标识:

        强制属性:身份证号码、指纹、DNA、性别(可选,至于为什么可选,大家的。。。偷笑)、……

        辅助属性:身高、年龄、外貌、体型、声音、着装、……

        顺序标识:住址、站在谁的旁边、坐第几排第几个、……

        相信大家看了上面例子之后应该有种豁然开朗感觉,QTP识别对象也是通过QTP一些封装属性识别,并且按照强制属性 --> 辅助属性 --> 顺序标识优先级识别对象。

        另外,如果通过强制属性、辅助属性和顺序标识的手段仍然不能识别一个对象时,QTP还有智能识别模式,智能识别模式会在以后的文章中讲到。


原创粉丝点击