2013-08-16 49 views
0

我的目標是捕獲UFT在被測應用程序(AUT)中生成的鼠標和鍵盤事件,以用於第三方應用程序。理想情況下,解決方案應該與現有的測試一起工作,或者只需要很少的更改。HP UFT:查找被測應用程序的窗口

在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

如果你先閱讀qtp用戶指南,它肯定會有所幫助。例如,使用Description.Create創建一個空的描述並將其提供給Desktop.ChildObjects,確實會返回與描述匹配的所有GUI對象 - 這意味着在這種情況下:all。您必須爲描述添加屬性才能使描述具有唯一性。但是,你根本不需要調用ChildObjects。見dox! – TheBlastOne

回答

0

你可以使用CreateObject(「Shell.Application」).windows來訪問所有的窗口,然後像窗口標題匹配你的應用程序標題一樣循環它。它正在爲我找到。