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
。
我正在使用以下代码突出显示浏览器实例(仅存在 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
。