前言
pywinauto 操作GUI應用程序上的元素,需先找到指定窗口,基于窗口查找框架再操作。
如何查看窗口信息?
當前面啟動記事本后,可以通過inspect.exe 查看窗口信息

主要看2個屬性,窗口的標題,也就是左上角我們看到的

可以通過標題和class屬性,連上窗口
示例1:通過標題連上窗口
代碼語言:JavaScript代碼運行次數:0運行復制
from pywinauto import Applicationapp = Application('uia').start("notepad.exe")w = app['無標題 - 記事本']
示例2:通過className屬性
代碼語言:javascript代碼運行次數:0運行復制
from pywinauto import Applicationapp = Application('uia').start("notepad.exe")w = app['Notepad']
還有另外一種寫法,通過.Notepad 的方式 (不推薦)
代碼語言:javascript代碼運行次數:0運行復制
from pywinauto import Applicationapp = Application('uia').start("notepad.exe")w = app.Notepad
這種點窗口名稱的寫法,只適合于一些英文的className屬性,一些中文的標題,或者有特殊符號就會報語法錯誤。
通常用窗口的標題操作更穩定一些,用class名稱有時候會報錯找不到
窗口的一些基本操作
窗口的操作方法
最大化 :w.maximize()最小化 :w.minimize()恢復正常 :w.restore()關閉窗口:w.close()獲取窗口狀態:w.get_show_state() 返回1 最大化, 0正常,2最小化獲取窗口坐標:w.rectangle() 返回 (L35, T149, R1544, B913)
操作示例
代碼語言:javascript代碼運行次數:0運行復制
from pywinauto import Applicationimport timeapp = Application('uia').start("notepad.exe")w = app['無標題 - 記事本']time.sleep(2)w.maximize() # 最大化time.sleep(2)w.restore() # 恢復time.sleep(2)w.close() # 關閉
window() 方法
前面是通過窗口的的標題操作打開的窗口,再介紹一個最簡單的方法是top_window(),例如
代碼語言:javascript代碼運行次數:0運行復制
from pywinauto import Applicationapp = Application('uia').start("notepad.exe")dlg = app.top_window()print(dlg)
這將返回具有應用程序頂級窗口的最高順序的窗口。
注意: 它返回的是是應用程序的頂級窗口,如果窗口有覆蓋的情況,那么你可以使用與傳遞給findwindows.find_windows()相同的參數,例如
代碼語言:javascript代碼運行次數:0運行復制
dlg = app.window(title_re="Page Setup", class_name="#32770")
如果對話框的標題很長 – 那么輸入的屬性訪問可能會很長,在這種情況下通常更容易使用
代碼語言:javascript代碼運行次數:0運行復制
app.window(title_re=".*部分標題.*")
獲取當前應用全部windows
代碼語言:javascript代碼運行次數:0運行復制
dialogs = app.windows()
這將返回應用程序的所有可見,啟用的頂級窗口的列表。
總結:推薦使用 app.window(title_re=”xxx”) 方法操作指定窗口