序号标识符问题 - QTP

时间:2014-10-10 10:40:27

标签: qtp hp-uft

页面上有4个静态文本

jWin.JavataStaticText("toolkit class:=nz.vdi","index:=0").GetROProperty("attached text")
jWin.JavataStaticText("toolkit class:=nz.vdi","index:=1").GetROProperty("attached text")
jWin.JavataStaticText("toolkit class:=nz.vdi","index:=2").GetROProperty("attached text")
jWin.JavataStaticText("toolkit class:=nz.vdi","index:=3").GetROProperty("attached text")

当我运行此脚本时,我会按以下方式输出

VM
Host
Host Server
Storage Volume

当我在4-5分钟后运行相同的脚本然后输出序列变更

Host Server
VM
Storage Volume
Host

为什么会这样?由于这个问题,我无法执行预期的任务

1 个答案:

答案 0 :(得分:1)

索引选择器是UFT在无法唯一标识对象时使用的最后一个回退。如果您有更好的方法来识别对象(例如,使用"附加文本" 属性),您应该使用它。

基本上索引意味着"来自此描述所描述的对象集合返回第N个" 所以如果UFT获取对象中的对象不同的顺序,您将获得相同索引的不同对象。

我不熟悉Java,所以我不知道返回对象的顺序。此外,我不知道您的用例是什么,但我非常确定您可以找到更好的方法来验证您的情况。

可能有用的一点是使用位置选择属性,该属性取决于对象的相对位置,在您的情况下可能更加一致。 位置选择器首先按x坐标,然后按y对对象进行排序。

For i = 0 to 3
  jWin.JavataStaticText("toolkit class:=nz.vdi","Location:=" & i).GetROProperty("attached text")
Next