點選上方 "
Python人工智慧技術
"
關註,
星標或者置頂
22點24分準時推播,第一時間送達
後台回復「
大禮包
」,送你特別福利
編輯: 樂樂 | 來自:冰冷的希望
連結:https://blog.csdn.net/qq_39147299/article/details/132409817
上一篇:
大家好,我是Python人工智慧技術
1.安裝
pywinauto是一個 用於自動化Python模組 ,適合Windows系統的軟體(GUI),可以 透過Pywinauto遍歷視窗 (對話方塊)和視窗裏的控制項,也可以 控制滑鼠和鍵盤輸入 ,所以它能做的事情比之前介紹的pysimplegui更多
一般使用pip安裝就行了
pip install pywinauto
官網文件:https://pywinauto.readthedocs.io/en/latest/
2.Application
我們要控制軟體的第一件事就是啟動一個Windows軟體,每一個軟體(行程)都是一個Application物件
例項化Application物件的時候可以傳入一個backend參數,可選值為 win32(預設)和uia
win32對應的框架: MFC 、VB6、VCL、簡單的 WinForms 控制項和大多數舊的遺留應用程式
uia對應的框架: WinForms、WPF、商店應用程式、Qt5、瀏覽器
如果無法知道要測試的軟體是屬於哪種框架,可以使用 Inspect(對應uia) 和 Spy++ (對應win32) 看看,你看哪個顯示得更全就選哪個。Inspect和Spy++需要自己安裝一下
下面是Application物件的主要方法
舉例,啟動一個微信套用,透過行程號連線, 行程號就是在工作管理員裏詳細資訊看到的PID
3.WindowSpecification
我們要獲取視窗,一個視窗都是一個 WindowSpecification 物件,可以透過Application物件的window()方法獲取,參數可以是title、 classname或者best_match等,這都可以在inspect.exe上看到,不過 需要註意的是inspect看到的Name其實對應的是window()的title參數
WindowSpecification物件常用的方法如下
舉個栗子
4.元素控制項
一個視窗裏一般都會有各種各樣的元素,比如說 按鈕 (Button)、 編輯列 (Edit)、 樹狀檢視 (Tree View)、 核取方塊 (CheckBox)、 對話方塊 (Dialog)、 工具列 (Toolbar)、 狀態列 (StatusBar)、 列表框 ( ListBox )、 窗格 (Pane)、 選單 (Menu)、 選單欄 ( MenuItem )、 靜態內容 (Static)、 工具提示 (ToolTips)、 列表控制項 (ListView)、 單選框 ( RadioButton )、 下拉式方塊 (ComboBox)、 索引標籤控制項 (TabControl)、 組框 (GroupBox)、 彈出選單 (PopupMenu)、 頭 部 (Header)等
因為控制項型別太多了不能一個一個學習,但是它們都有一個 element_info 的內容,存取之後會返回一個繼承於 ElementInfo 的物件(UIAElementInfo或HwndElementInfo),比較重要的內容或方法如下
這些元素除了有 element_info 可以獲取一些元素的主要資訊,它們還都被包裝成一個Wrapper,所以也可以學一下 BaseWrapper 的常用方法和內容。其實 BaseWrapper 的方法基本上都是對 ElementInfo 進一步包裝,我只列出部份方法,如下表
說明一下,每個控制項元素都有對應的Wrapper,所以上面的方法也不一定都用,需要根據實際情況進行測試區分。另外,比較有用的 click_input() 和 type_keys() 這兩個方法分別用於操作滑鼠和鍵盤(輸入),下面我會單獨拿出來說一下
滑鼠操作
滑鼠點選肯定離不開點選的位置,桌面就是一個座標,左上角為座標原點,往右是X軸正向,往下是Y軸正向。pywinauto提供了一個mouse模組用於滑鼠操作,最核心的方法是 _perform_click_input() ,不過它是一個私有方法,我們呼叫的是基於它的封裝方法,如下表
參數說明:
參數button 的預設值都是「left」,即滑鼠左鍵,可選值有left、right、middle、move、wheel、x
參數coords 的預設值都是元組(0, 0),元組裏的兩個整數分別是X、Y軸的值
參數wheel_dist 表示捲動的距離,大於0是向上捲動,小於0是向下滑動
舉個栗子
鍵盤操作
鍵盤操作主要是按下鍵盤上的按鍵,相關方法在keyboard模組,最最主要的是 send_keys() 方法,第一個參數 keys 就是我們需要按下的按鍵,其他參數比如說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平台預設是發送虛擬按鍵的,以 VK_ 開頭的按鍵,都是指虛擬按鈕,如果不想使用虛擬按鈕可以把 VK_ 字首去掉,把send_keys()的 vk_packet 參數改為 False 即可
單個按鍵按下擡起還不夠,往往需要組合鍵,這時候就需要修飾詞了,在大括弧裏可以使用
down
、
up
控制按鍵什麽時候按下和擡起,如果後面加上數位,表示按下多少次
當然,很多時候使用
down
、
up
修飾感覺不夠簡潔,所以pywinauto還提供了簡化寫法,使用
+
代替
{VK_SHIFT}
,使用
^
代替
{VK_CONTROL}
,使用
%
代替
{VK_MENU}
如果不想按下按鈕,純屬想要輸入純字串,那就需要取消轉義了,註意修飾詞和按鈕的寫法是不一樣的
為了跟上AI時代我幹了一件事兒,我建立了一個知識星球社群:ChartGPT與副業。想帶著大家一起探索 ChatGPT和新的AI時代 。
有很多小夥伴搞不定ChatGPT帳號,於是我們決定,凡是這三天之內加入ChatPGT的小夥伴,我們直接送一個正常可用的永久ChatGPT獨立帳戶。
不光是增長速度最快,我們的星球品質也絕對經得起考驗,短短一個月時間,我們的課程團隊釋出了 8個專欄、18個副業計畫 :
簡單說下這個星球能給大家提供什麽:
1、不斷分享如何使用ChatGPT來完成各種任務,讓你更高效地使用ChatGPT,以及副業思考、變現思路、創業案例、落地案例分享。
2、分享ChatGPT的使用方法、最新資訊、商業價值。
3、探討未來關於ChatGPT的機遇,共同成長。
4、幫助大家解決ChatGPT遇到的問題。
5、 提供一整年的售後服務,一起搞副業
星球福利:
1、加入星球4天後,就送ChatGPT獨立帳號。
2、邀請你加入ChatGPT會員交流群。
3、贈送一份完整的ChatGPT手冊和66個ChatGPT副業賺錢手冊。
其它福利還在籌劃中... 不過,我給你大家保證,加入星球後,收獲的價值會遠遠大於今天加入的門票費用 !
本星球第一期原價 399 ,目前屬於試營運,早鳥價 169 ,每超過50人漲價10元,星球馬上要來一波大的漲價,如果你還在猶豫,可能最後就要以 更高價格加入了 。。
早就是優勢。建議大家盡早以便宜的價格加入!
歡迎有需要的同學試試,如果本文對您有幫助,也請幫忙點個 贊 + 在看 啦!❤️
在 還有更多優質計畫系統學習資源,歡迎分享給其他同學吧!
你還有什
麽想要補充的嗎?
免責聲明:本文內容來源於網路,文章版權歸原作者所有,意在傳播相關技術知識&行業趨勢,供大家學習交流,若涉及作品版權問題,請聯系刪除或授權事宜。
技術君個人微信
添加技術君個人微信即送一份驚喜大禮包
→ 技術資料共享
→ 技術交流社群
--END--
往日熱文:
Python程式設計師深度學習的「四大名著」:
這四本書著實很不錯!我們都知道現在機器學習、深度學習的資料太多了,面對海量資源,往往陷入到「無從下手」的困惑出境。而且並非所有的書籍都是優質資源,浪費大量的時間是得不償失的。給大家推薦這幾本好書並做簡單介紹。
獲得方式:
1.掃碼關註本公眾號
2.後台回復關鍵詞:名著
▲長按掃描關註,回復名著即可獲取