HP UFT:查找正在测试的应用程序的窗口

时间:2013-08-16 18:38:06

标签: qtp hp-uft

我的目标是捕获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中有另一种方法可以在被测试的应用程序中获取窗口吗?

1 个答案:

答案 0 :(得分:0)

您可以使用CreateObject(“Shell.Application”)。windows来访问所有窗口,然后循环使用窗口标题匹配您的应用程序标题。这对我来说很有用。