windows 桌面GUI自動化-3. pywinauto 操作指定window窗口

前言

pywinauto 操作GUI應用程序上的元素,需先找到指定窗口,基于窗口查找框架再操作。

如何查看窗口信息?

當前面啟動記事本后,可以通過inspect.exe 查看窗口信息

windows 桌面GUI自動化-3. pywinauto 操作指定window窗口 alt=”windows 桌面GUI自動化-3. pywinauto 操作指定window窗口”>

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

windows 桌面GUI自動化-3. pywinauto 操作指定window窗口 alt=”windows 桌面GUI自動化-3. pywinauto 操作指定window窗口”>

還有一個是查看的class屬性,只能通過工具查看

可以通過標題和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”) 方法操作指定窗口

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享