为什么Page.GetTOProperty(“索引”)返回异常高的值,而空将是正确的值?

时间:2019-01-23 15:00:38

标签: qtp hp-uft

我正在用Page.GetTOProperty方法观察到一个奇怪的事情。重现步骤:

  • 创建一个新的脚本化业务流程测试(BPT)组件(使用没有任何库或共享库的“空”应用程序区域)
  • 打开一个IE浏览器实例并导航到google.com(或其他任何网站,没关系)
  • 使用对象间谍将页面testobject添加到基于操作的对象存储库(“ OR”)中。提供时,请勿添加任何“后代”(应为“子级”)对象(浏览器除外,如果添加页面,浏览器会自动添加)
  • 关闭浏览器实例(或不要,这似乎无关紧要)
  • 粘贴此脚本代码:

    Dim IndexPropVal IndexPropVal = Browser(“ Google”)。Page(“ Google”)。GetTOProperty(“ index”) 打印“ IndexPropVal =”&CSTr(IndexPropVal)&“ IsEmpty =”&CStr(IsEmpty(IndexPropVal))

  • 运行脚本

问题:

  • 为什么会输出以下内容?

    IndexPropVal = 20002 IsEmpty = False

在某些情况下为10002,在其他情况下为20002或30002,其原因未知。

  • 为什么不打印此:

    IndexPropVal = IsEmpty = true

这是我期望的,因为对于未在OR中定义的所有TO属性,GetTOProperty应该返回空吗?

变体(10002与20002与30002)可能取决于测试对象是否在基于对象的OR中,和/或脚本在某种程度上是组件还是GUI操作脚本,但这并不似乎并非总是如此。

它无疑与运行脚本的频率或运行之间关闭UFT无关。

无论您是全局打开还是关闭智能标识,还是对于每个单独的OR条目(即浏览器OR条目和页面OR条目),都没有关系。

我找不到任何可复制的依赖项!

我在UFT 14.50中首先观察到这一点。

如果在对象存储库中未定义索引属性,我确定UFT 12.03可正确用于报告Empty值。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

由于每个Page对象始终只有一个Browser对象,因此索引是没有意义的,如果描述为空或合适,则存在一个匹配项,如果描述不匹配,则不存在匹配项。由于index是一个序数选择器,仅在多个对象与一个描述匹配时才使用,因此它对Page测试对象没有用。

UFT似乎正在使用index属性进行内部整理,您不应使用它,也不会影响测试。