QTP Index

上一篇 / 下一篇  2011-01-19 10:36:43 / 个人分类:知识的积累

在需要唯一识别一个对象时,index属性有时候可能非常有用。index属性是对象在源代码中出现的顺序,第1次出现时,index值为0

Index属性是object-specific的。因此,当你用index属性值“3来描述一个WebEdit对象时,QTP会在被测程序的当前页面中查找第4WebEdit对象。

如果你使用index属性值3来描述一个WebElement对象时,QTP会在被测程序的当前页面中查找第4Web对象。

例如,当前页面中存在下面的对象:

  • 一个名为QppleImage对象
  • 一个名为UserNameImage对象
  • 一个名为UserNameWebEdit对象
  • 一个名为PasswordImage对象
  • 一个名为PasswordWebEdit对象

下面的语句中指的是列表中的第3个对象,因为它要求指向的是第1个名为UserNameWebEdit对象。

WebEdit("Name:=UserName", "Index:=0")

下面的语句中指的是列表中的第2个对象,因为它要求指向的是第1个名为UserNameWebElement对象。

WebElement("Name:=UserName", "Index:=0")

注:如果当前只有一个对象,使用index=0将无法查找到对象,因此就不能在对象描述中使用index属性。

 

 

  之前使用QTP测试的VB程序,知道了Index在对象识别时候起到一个很重要的主用,和条街的门牌号一样。某某街某某号,然后QTP就通过这个东西去找出来,而且也是固定不变,因此,大家就开始偏向对描述性编程的喜好与拥护。优势如下:可移植性强,对对象库的依赖减少(一会有人丢我焦皮说我扯蛋,对象库是QTP精华什么的话一句句就出来,等我说完先)
    为什么说到它的移植性强呢,首先,通过对象库去识别对象并保存对象,会出现因为机器环境不同的情况,对象在不同机器上识别为不同类别而导致脚本可移植差。关于对象库的依赖,与上边那点有点类似。
     随着时间的推移,对QTP的了解加深。现在主要是在web方面写的脚本,发现了在web的page里面,对象标示用的index是会随着对象的变化而变化着,并非一成不变(我对这个观点一直很质疑,虽然是自己发现的,但还是反复的试验着)。
     首先说下自己的质疑点
     1,关于index的生成。在VB里面,大家知道,这是开发远自己就可以定义的,但是在web里面呢?如果是可以有开发自己定义的,哪么为什么对象的标示index却在变动。
     2,这个Index是否是QTP自己在运行程序过程中,自己对该程序做的标示,也就是非window的自己标示方法,才会导致这个值在变化着。
     
     自己研究了下,后来发现,当我们添加某一个web元素时候,这个对象会对应自己的一个index,这个是window或者是web程序自己对控件的标示。而我们使用description描述出来webelemenet的对象的index,这个是QTP自己对对象的标示方法。但这样是否会冲突和矛盾呢?其实是不会的。在对象库中添加的对象,我们在代码中直接编写,QTP就自己去对象库中查找这个东西,自然这个对象的标示是web或者window自己做的。而当我们用webelement去查找这个东西时候,QTP就在网页元素自己做好了标示,类似active Screen事先把对象页面存储起来一样,已经对它们分别做好了身份识别。

     好了,说了这么多,说说用处先吧。
     大家在测试web过程,最担心的问题就是,对象识别不到,或者识别到了,不是自己理想的类型,哎,委曲求全,来个低级录制吧....
    eg:之前看到论坛有人在求救一些关于无法识别的,类似view tree之类的东西,感到很郁闷...
    哪么,根据上边的那个原理,大家可以看到,其实我们通过描述的方法做到这样:以下是一棵可以张开的树,有3个可以张开的,并且QTP对他们分别节点标示 index为1,2,3,而我们把节点张开后...


TAG:

 

评分:0

我来说两句

Open Toolbar