qtp - 为什么 Page.GetTOProperty ("index") 返回高得离谱的值,而空值是正确的值?
问题描述
我用 Page.GetTOProperty 方法观察到一件奇怪的事情。重现步骤:
- 创建一个新的脚本化业务流程测试 (BPT) 组件(使用没有任何库或共享对象存储库的“空”应用程序区域)
- 打开一个 IE 浏览器实例并导航到 google.com(或任何其他网站,没关系)
- 使用 object spy 将页面 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 正确用于报告空值。
到底是怎么回事?
解决方案
Page
由于每个对象始终只有一个对象,Browser
因此索引是无意义的,如果描述为空或适合,则有一个匹配项,如果描述不匹配,则没有匹配项。作为index
序数选择器,仅在多个对象与描述匹配时使用,对Page
测试对象无用。
UFT 似乎将该index
属性用于内部管理,您不应该使用它,它也不应该影响您的测试。