pywinauto 使用

Pywinauto是基於Python開發的,用於自動化測試的腳本模塊,主要操做於Windows標準圖形界面。它能夠容許你很容易的發送鼠標、鍵盤動做給Windows的對話框和控件。 
其中,最主要功能爲對windows標準控件的一系列動做可編程處理。包括對窗口的指定、鼠標或鍵盤操做、得到控件屬性等等。程序的開始爲對所需應用的啓 動或鏈接。得到程序鏈接後,pywinauto經過窗口的名稱、類名、是否可見等屬性尋找匹配的窗口,進而經過相似方法尋找用戶所需的控件,並得到相應的 句柄。以後,用戶可經過易理解的編程方式對指定控件進行相關操做的編程,包括鼠標點擊、鍵盤輸入、判斷控件間關係、獲取控件屬性等。

官方網站:https://pywinauto.readthedocs.io/en/latest/contents.htmlhtml

 

pywinauto使用

首先,導入這個模塊python

from pywinauto.application import Application
  • 1

(一) 判斷程序的backend

注意,首先須要判斷你要進行的程序是用什麼語言寫的,在實例化的時候會有區別,主要是判斷backend是什麼。 
這裏寫圖片描述 
 
那麼如何判斷程序的backend是’win32’仍是’uia’呢?官方文檔中推薦使用spy++和inspect來檢查。有人專門整理了一下,放在github上了https://github.com/blackrosezy/gui-inspect-tool。 
spy++我們以前講過。接下來將將如何使用inspect來判斷backend的類別。git

Switch Inspect.exe into UIA mode (using MS UI Automation). If it can show more controls and their properties than Spy++, probably the "uia" backend is your choice.
  • 1

將inspect左上角的下拉列表中切換到「UI Automation」,而後鼠標點一下你須要測試的程序窗體,inspect就會顯示相關信息。 
下圖爲點擊window文件夾的結果,inspect中顯示了相關的信息,以下圖所示。說明backend爲uia。 
這裏寫圖片描述github

再來看點擊 屏幕錄像專家程序的結果 
這裏寫圖片描述
inspect中顯示拒絕訪問,說明屏幕錄像專家程序的backend應該是win32。編程

(二)肯定自動化入口點

這裏主要是限制自動化控制進程的範圍。如一個程序有多個實例,自動化控制一個實例,而保證其餘實例(進程)不受影響。 
主要有兩種對象能夠創建這種入口點——Application() , Desktop(). 
Application的做用範圍是一個進程,如通常的桌面應用程序都爲此類。 
Desktop的做用範圍能夠跨進程。主要用於像win10的計算器這樣包含多個進程的程序。這種目前比較少見。使用方法見entry-points-for-automationwindows

(三)鏈接到進程

創建好入口後,咱們須要鏈接到進程中。這裏有兩種方法: 
- 從新開啓一個進程。使用Application對象的start()方法app

start(self, cmd_line, timeout=app_start_timeout)  # instance method:
  • 1

這裏的cmd_line參數就是你使用命令行啓動程序的命令語句。因此能夠很方便的實現帶輸入參數的程序啓動。 
啓動屏幕錄像專家,能夠使用以下代碼:函數

app = Application().start(r"D:\Program Files (x86)\tlxsoft\屏幕錄像專家 共享版 V2017\屏錄專家.exe")
  • 1
  • 鏈接到已有的進程。使用Application對象的connect()方法。這個方法對已有進程的綁定很是靈活。 
    1.使用進程ID (PID)進行綁定。
app = Application().connect(process=19188)
  • 1

進程的PID能夠在任務管理器中查看。 
這裏寫圖片描述工具

2.使用窗口句柄綁定測試

app = Application().connect(handle=0x00230DB6)
  • 1

窗口句柄能夠在Spy++中查看 
這裏寫圖片描述

3.使用程序路徑綁定

app = Application().connect(path=r"D:\Program Files (x86)\tlxsoft\屏幕錄像專家 共享版 V2017\屏錄專家.exe")

4.使用標題、類型等匹配

app = Application().connect(title_re="屏幕錄像專家.*", class_name="TMainForm")

第一、2種方法通用性不強,每次運行ID和窗口句柄均可能不同。第3種方法最直接簡單(j建議使用),而第4種方法靈活性最強。

(四) 選擇菜單項

我的感受pywinauto最方便的地方之一就是可以很輕易的操做菜單,並且對於多級菜單毫無壓力。 
這裏寫圖片描述

下面介紹兩種方法來操做它: 
- 使用menu_select()函數進行選擇 
要從屏幕錄像專家程序的菜單選中轉換工具->EXE/LXE轉成MP4。只須要在python中加入以下語句:

dlg_spec = app.window(title='屏幕錄像專家 V2017')
dlg_spec.menu_select(r"轉換工具->EXE/LXE轉成MP4")
  • 使用快捷鍵進行選擇 
    能夠看到,菜單的每一個選項都對應着快捷鍵,能夠使用組合的快捷鍵直接訪問咱們須要的選項。 
    使用type_keys()函數,這裏須要的快捷鍵是Alt+T+P:
dlg_spec = app.window(title='屏幕錄像專家 V2017')
dlg_spec.type_keys('%TP')

對於一些特殊符號的快捷鍵,對應的碼錶以下:

SHIFT                            +      
CTRL                             ^      
ALT                               %
空格鍵                            {SPACE}

BACKSPACE                        {BACKSPACE}、{BS}   or   {BKSP}      
BREAK                            {BREAK}      
CAPS   LOCK                      {CAPSLOCK}      
DEL   or   DELETE                {DELETE}   or   {DEL}      
DOWN   ARROW                     {DOWN}      
END                              {END}      
ENTER                            {ENTER}   or   ~      
ESC                              {ESC}      
HELP                             {HELP}      
HOME                             {HOME}      
INS   or   INSERT                {INSERT}   or   {INS}      
LEFT   ARROW                     {LEFT}      
NUM   LOCK                       {NUMLOCK}      
PAGE   DOWN                      {PGDN}      
PAGE   UP                        {PGUP}      
PRINT   SCREEN                   {PRTSC}      
RIGHT   ARROW                    {RIGHT}      
SCROLL   LOCK                    {SCROLLLOCK}      
TAB                              {TAB}      
UP   ARROW                       {UP}     
+                                {ADD}      
-                                {SUBTRACT}      
*                                {MULTIPLY}      
/                                {DIVIDE}
F1                               {F1} 
F2                               {F2} 
F3                               {F3} 
.....
F15                             {F15} 
F16                             {F16}
  • 束後,EXE轉MP4的插件窗口就彈出來了。

from:https://blog.csdn.net/shawpan/article/details/78170117

相關文章
相關標籤/搜索