UFT 描述性编程浏览器("creationtime:=-1")并不总是有效

UFT descriptive programming Browser("creationtime:=-1") not always working

我正在使用以下代码突出显示浏览器实例(仅存在 1 个浏览器实例)

Browser("CreationTime:=-1").highlight

有时代码会突出显示唯一可用的浏览器实例,而有时会显示 "No object found"。我在 tarun lalwani 拔下的 QTP 中读到,如果存在 1 个浏览器实例,则 Browser("CreationTime:=-1").exist(5) 将 return 为真。请在这里告诉我做错了什么或理解错了。

如果只有 1 个浏览器实例,我正在尝试执行某些操作。

如果您只打开一个浏览器实例,那么 CreationTime 将是 0 而不是 1 因为它从 0 开始。

因此,如果您有两个浏览器实例,第一个打开的浏览器的 CreationTime 将为 0,第二个打开的浏览器的 CreationTime 将为 1。

CreationTime 属性 是一个选择器,仅当描述的其余部分不唯一时才使用选择器。这意味着如果只有一个浏览器,QTP/UFT 将不会查看您指定的 CreationTime 并且不会关心您提供的值是否无效(CreationTime 应该是一个 non-negative整数)。

一旦有多个浏览器(如果你认为只有一个,要么是你要么是 QTP 弄错了...)QTP 将查看选择器并发现它有一个无效值并告诉你该对象是找到了。

我看不出使用这个描述有什么意义,如果你认为只有一个浏览器存在,更合乎逻辑的描述是 "micclass:=Browser" 这样你就会得到一个信息错误(对象不是 unique/found) 当QTP找不到对象时。


编辑

如果你想检测是否只有一个浏览器,你可以通过两种不同的方式来完成。

Public Function ThereIsOneBrowser
       On Error Resume Next
       Browser("title:=.*").GetROProperty "title"
       If Err Then
            ThereIsOneBrowser = False
       Else               
            ThereIsOneBrowser = True
       End If
       On Error Goto 0 ' Cancel On Error Resume next
End Function

Public Function NumberOfBrowsers
    Set desc = Description.Create()
    desc("micclass").Value = "Browser"
    NumberOfBrowsers = Desktop.ChildObjects(desc).Count
End Function

每种方法的优缺点:

  • ThereIsOneBrowser如果没有浏览器会等待对象识别超时(默认20秒)所以比较慢
  • 我不确定 Desktop.ChildObjects 是否知道如何与 Mobile Center (MC) 交互,所以如果您有时测试移动设备,这可能会给您错误的结果

如果您不测试移动设备,我会选择 NumberOfBrowsers