pywinauto,一款Win自動化利器!
共 6995字,需瀏覽 14分鐘
·
2024-05-31 08:20
??我的小冊 45章教程:(小白零基礎用Python量化股票分析小冊) ,原價299,限時特價2杯咖啡,滿100人漲10元。
作者:冰冷的希望
https://blog.csdn.net/qq_39147299/article/details/132409817
pywinauto是一個用于自動化Python模塊,適合Windows系統(tǒng)的軟件(GUI),可以通過Pywinauto遍歷窗口(對話框)和窗口里的控件,也可以控制鼠標和鍵盤輸入,所以它能做的事情比之前介紹的pysimplegui更多
一般使用pip安裝就行了
pip install pywinauto
官網文檔:https://pywinauto.readthedocs.io/en/latest/
我們要控制軟件的第一件事就是啟動一個Windows軟件,每一個軟件(進程)都是一個Application對象
實例化Application對象的時候可以傳入一個backend參數(shù),可選值為win32(默認)和uia
win32對應的框架:MFC、VB6、VCL、簡單的 WinForms 控件和大多數(shù)舊的遺留應用程序
uia對應的框架:WinForms、WPF、商店應用程序、Qt5、瀏覽器
如果無法知道要測試的軟件是屬于哪種框架,可以使用 Inspect(對應uia) 和 Spy++(對應win32)看看,你看哪個顯示得更全就選哪個。Inspect和Spy++需要自己安裝一下
下面是Application對象的主要方法
舉例,啟動一個微信應用,通過進程號連接,進程號就是在任務管理器里詳細信息看到的PID
我們要獲取窗口,一個窗口都是一個WindowSpecification對象,可以通過Application對象的window()方法獲取,參數(shù)可以是title、classname或者best_match等,這都可以在inspect.exe上看到,不過需要注意的是inspect看到的Name其實對應的是window()的title參數(shù)
WindowSpecification對象常用的方法如下
舉個栗子
一個窗口里一般都會有各種各樣的元素,比如說按鈕 (Button)、編輯欄(Edit)、樹狀視圖(Tree View)、復選框(CheckBox)、對話框(Dialog)、工具欄(Toolbar)、狀態(tài)欄(StatusBar)、列表框(ListBox)、窗格(Pane)、菜單(Menu)、菜單欄(MenuItem)、靜態(tài)內容(Static)、工具提示(ToolTips)、列表控件(ListView)、單選框(RadioButton)、組合框(ComboBox)、選項卡控件(TabControl)、組框 (GroupBox)、彈出菜單(PopupMenu)、頭部(Header)等
因為控件類型太多了不能一個一個學習,但是它們都有一個 element_info的屬性,訪問之后會返回一個繼承于ElementInfo的對象(UIAElementInfo或HwndElementInfo),比較重要的屬性或方法如下
這些元素除了有element_info可以獲取一些元素的主要信息,它們還都被包裝成一個Wrapper,所以也可以學一下BaseWrapper的常用方法和屬性。其實BaseWrapper的方法基本上都是對ElementInfo進一步包裝,我只列出部分方法,如下表
說明一下,每個控件元素都有對應的Wrapper,所以上面的方法也不一定都用,需要根據實際情況進行測試區(qū)分。另外,比較有用的click_input()和type_keys()這兩個方法分別用于操作鼠標和鍵盤(輸入),下面我會單獨拿出來說一下
鼠標點擊肯定離不開點擊的位置,桌面就是一個坐標,左上角為坐標原點,往右是X軸正向,往下是Y軸正向。pywinauto提供了一個mouse模塊用于鼠標操作,最核心的方法是_perform_click_input(),不過它是一個私有方法,我們調用的是基于它的封裝方法,如下表
參數(shù)說明:
參數(shù)button的默認值都是“l(fā)eft”,即鼠標左鍵,可選值有l(wèi)eft、right、middle、move、wheel、x
參數(shù)coords的默認值都是元組(0, 0),元組里的兩個整數(shù)分別是X、Y軸的值
參數(shù)wheel_dist表示滾動的距離,大于0是向上滾動,小于0是向下滑動
舉個栗子
鍵盤操作主要是按下鍵盤上的按鍵,相關方法在keyboard模塊,最最主要的是send_keys()方法,第一個參數(shù)keys就是我們需要按下的按鍵,其他參數(shù)比如說with_spaces、with_tabs、with_newlines、turn_off_numlock、set_foreground、vk_packet,一看就知道作用,而且都是布爾值,此處不進行舉例
pywinauto支持的完整的按鍵可以在官方文檔查看,https://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html
下面我列舉出的是一些比較常用的按鍵
說明:
使用按鍵時需要搭配大括號,比如說按下回車鍵是 '{ENTER}' (是字符串)
在Windows平臺默認是發(fā)送虛擬按鍵的,以VK_開頭的按鍵,都是指虛擬按鈕,如果不想使用虛擬按鈕可以把VK_前綴去掉,把send_keys()的vk_packet參數(shù)改為False即可
單個按鍵按下抬起還不夠,往往需要組合鍵,這時候就需要修飾符了,在大括號里可以使用down、up控制按鍵什么時候按下和抬起,如果后面加上數(shù)字,表示按下多少次
當然,很多時候使用down、up修飾感覺不夠簡潔,所以pywinauto還提供了簡化寫法,使用+代替{VK_SHIFT},使用^代替{VK_CONTROL},使用%代替{VK_MENU}
如果不想按下按鈕,純屬想要輸入純字符串,那就需要取消轉義了,注意修飾符和按鈕的寫法是不一樣的
最后推薦一下我們團隊寫的量化小冊的內容,45篇內容!從Python安裝,入門,數(shù)據分析,爬取股票基金的歷史+實時數(shù)據,以及如何寫一個簡單量化策略,策略回測,如何看資金曲線統(tǒng)統(tǒng)都有介紹!非常超值!
歡迎訂閱:原價299 早鳥價2杯咖啡錢,即可永久閱讀。滿400人又要漲價了,現(xiàn)在的價格非常非常低,只要2杯奶茶,就可以終身訂閱+課程源碼,還有永久陪伴群。48小時無理由退款,放心食用!
往期推薦
量化: 如何用Python爬取創(chuàng)業(yè)板歷史+實時股票數(shù)據!|實戰(zhàn)股票分析篇利用Pandas 9招挖掘五糧液股價!|實戰(zhàn)股票數(shù)據分析篇 Pandas滾動操作 |量化股票第一步,用Python畫股票K線,雙均線圖,可視化你的股票數(shù)據!|如何用Python爬取全部800多只ETF基金數(shù)據!|如何用Python寫一個雙均線策略 |如何用Python開發(fā)一個多策略機器人!上篇!|Python量化系列-用布林策略買五糧液能賺多少錢?|只要4秒鐘!用Python 獲取上證指數(shù)34年的歷史日線數(shù)據!
入門: 最全的零基礎學Python的問題 | 零基礎學了8個月的Python | 實戰(zhàn)項目 |學Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會做詩的機器人 | 給圖片上色 | 預測收入 | 碟中諜這么火,我用機器學習做個迷你推薦系統(tǒng)電影
小工具: Pdf轉Word,輕松搞定表格和水印! | 一鍵把html網頁保存為pdf!| 再見PDF提取收費! | 用90行代碼打造最強PDF轉換器,word、PPT、excel、markdown、html一鍵轉換 | 制作一款釘釘?shù)蛢r機票提示器! |60行代碼做了一個語音壁紙切換器天天看小姐姐!
