我的目标是捕获UFT在被测试应用程序(AUT)中生成的鼠标和键盘事件,以便在第三方应用程序中使用。理想情况下,解决方案应该与现有测试一起使用,或者只需要很少的更改。
在AUT上使用Windows hooking会起作用,但这需要枚举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中有另一种方法可以在被测试的应用程序中获取窗口吗?
答案 0 :(得分:0)
您可以使用CreateObject(“Shell.Application”)。windows来访问所有窗口,然后循环使用窗口标题匹配您的应用程序标题。这对我来说很有用。