0

我的目标是捕获 UFT 在被测应用程序 (AUT) 中生成的鼠标和键盘事件,以便在第三方应用程序中使用。理想情况下,该解决方案应该与现有测试一起使用,或者只需要进行最少的更改。

在 AUT 上使用Windows 挂钩会起作用,但这需要枚举 AUT 的窗口句柄。有没有通用的方法来获得这些?

最简单的解决方案是对测试中的对象执行此操作:

Set obj = Dialog("Login")
Print "HWND of the login dialog: " & Hex(obj.GetROProperty("hwnd"))

明显的缺点是为每个测试中的每个对象手动编码。

我尝试枚举窗口和对话框对象,但事实证明 UFT 枚举了每个窗口,无论它是否属于 AUT:

Set desc = Description.Create  
Set objChildren = Desktop.ChildObjects(desc) 
' The following counts every open window on the desktop
Print "Objects under Desktop: " & objChildren.Count

令人惊讶的是,测试的对象存储库变成了空的:

' The following line outputs zero
Print "Repository Count:" & RepositoriesCollection.Count

查询单个操作的存储库也没有结果:

Dim qtApp,qtRepositories, actName
actName=Environment.Value("ActionName")
Set qtApp = GetObject("", "QuickTest.Application") 'also tried with CreateObject
Set qtRepositories = qtApp.Test.Actions(actName).ObjectRepositories
' The following line outputs zero
Print "Action name: " & actName & " Repository count: " & qtRepositories.Count 

仍然可以选择使用 ObjectRepositoryUtil,但为此您需要一个存储库路径。据我所知,我基于“Flight GUI”示例应用程序创建的小测试甚至不包含保存对象存储库的 .tsr 文件。

那么 UFT 中是否有另一种方法可以在被测应用程序中获取窗口?

4

1 回答 1

0

您可以使用 CreateObject("Shell.Application").windows 访问所有窗口,然后使用窗口标题匹配您的应用程序标题等条件循环它。它对我有用。

于 2015-01-18T20:58:37.043 回答