我試圖遠程控制一個Windows應用程序,有時會在啓動時使用pywinauto顯示一個警告窗口。Pywinauto - 如何閱讀彈出窗口中的文本來識別它?
下面的代碼標識窗口,因爲它沒有菜單。
我想閱讀彈出文本以查找短語「請與您的系統管理員聯繫」。在彈出的窗口中知道它是 正確的一個。
mywindows = pywinauto.findwindows.find_windows(title_re=".*MyProgramTitle")
# proof that two windows are found
print(len(mywindows))
for handle in mywindows:
print('\nhandle {}'.format(handle))
app = Application().connect(handle=handle)
navwin = app.window(handle=handle)
if not navwin.menu_items():
# no menu - I bet it's a pop up
print('{} is the window I\'m looking for'.format(handle))
navwin.print_control_identifiers()
上面的代碼打印出所有窗口的信息,包括 「靜 - ‘位置映射失敗,請與系統管理員聯繫。’」
但我需要趕上打印輸出進行進一步的處理它。
謝謝,我花了很多時間閱讀的入門指南。你的方法要求我需要知道** Dialogname **。找出這當前是一個挑戰。如果有多個具有相同標題的對話框(其中只有一個具有所需的文本),此方法是否可行? 'app.DialogName.OK.click()'如何知道它需要點擊'static'而不是其他同名窗口? – 576i
對於默認'backend ='win32'',你可以使用'app.windows()'來處理所有的頂級窗口。說'print [wnd.window_text()for wnd in app.windows()]''。這就是如何知道'DialogName'。 –
如果有多個具有相同名稱的對話框,可以使用'app.window(title ='Dialog name',active_only = True)'而不是'app.DialogName'來消除搜索條件的歧義。或者更詳細的選擇:'app.window(title ='Dialog name',found_index = 0)'。 –