2010-05-13 206 views
2

我有一個GUI應用程序,可以在桌面上創建許多類似的窗口。所有窗口都有相同的標題。我必須枚舉具有相同標題的所有對話框,並對每個對話框進行一些測試。pywinauto:採取多個應用程序窗口

如果我稱:

dialog = app['Window Name'] 

pywinauto返回WindowSpecification對象,它是與通過名字來訪問對照一起有用的。

當我打電話:

dialogs = app.windows_(title='Window Name') 

pywinauto返回我HwndWrapper情況下它不是那麼有用的列表。

如何獲得具有指定標題但是作爲WindowSpecification對象的窗口列表?

回答

4

你不可能真的。 WindowSpecification是所有符合所提供標準的窗口的單一規範。 當您使用WindowSpecification實例時,您通常會與WindowSpecification正在爲您找到並訪問的HwndWrapper實例進行交互。

所以我想答案是與HwndWrapper的由app.windows_(返回)(類似於WindowSpecification.WrapperObject()

注意返回的單HwndWrapper工作 - 如果你總是試圖縮小窗口列表通過查看窗口中的特定控件 - 然後使用應用['Window Name'] ['Unique Control Name']。Parent()應返回窗口。 WindowSpecification不一定存在,而HwndWrapper實例反映了特定的底層窗口句柄,這允許WindowSpecification實現等待的代碼爲Windows或檢查它們是否存在。

+0

隨着HwndWrapper我不能訪問控制,如字典的項目,如 對話框[「窗口」] [「控制」] 有沒有辦法跳從HwndWrapper到WindowSpecification? 我的窗戶都是一樣的,所以我不能搜索和跳轉到父:( – 2010-05-15 12:21:36

+0

是 - 可以 WS = WindowSpecification({「把手」:hwnd_wrapper_instance.handle) 這將創建一個WindowSpecification,只有匹配一個對話框/控件(具有該特定的句柄)。 – markm 2010-05-18 08:19:27