PythonPC客戶端自動化實現原理(pywinauto)
一、前言
今天在這邊專門整理了一遍文章,和大家一起聊聊如何使用python做PC端自動化!
二、環境安裝
使用python實現來做PC端自動化,前提是先安裝好python,那么還需要用到一個第三方庫:pywinauto,在這邊我們首先需要安裝好這個庫,安裝命令如下:
pip install pywinauto
三、使用說明
安裝好了之后,關于使用說明大家可以參照官方文檔上的說明
內容翻譯如下:
就是說在我們安裝好Pywinauto之后,首先要確定哪種可訪問性技術(pywinauto的backend)可以用于我們的應用程序,在windows上受支持的輔助功能技術有兩種:
Win32 API (backend='win32') 默認backend
MS UI Automation (backend='uia')
如果您不能確定程序到底適用于那種backend,可以借助于GUI對象檢查工具來做,常用的檢查工具有Inspect.ex,Spy++ 等,這個不做過多介紹,大家自行學習和下載,使用很簡單,也非常便捷。
四、快速入門
在安裝好環境之后,并且確定了應用程序適用的backend,那么接下來我們就可以使用Pywinauto這個模塊來對應用程序進行自動化操作了
1、連接到應用程序這邊以window自帶的計算器程序作為案例,給大家做講解
連接應用程序,首先需要用到pywinauto.application.Application()來創建一個應用程序對象,然后再連接到應用程序,有如下兩種方法:
方式一:直接通過start方法打開操作的應用程序,
from pywinauto import application# 方式一:創建應用程序時可以,指定應用程序的合適的backend,start方法中指定啟動的應用程序app = application.Application(backend=’uia’).start(’notepad.exe’)
方式二:連接已經打開應用程序,可以通過connect連接到指定的應用程序
from pywinauto import application# 方式二:查看要打開的程序進程號,通過process指定進程號連接app = application.Application().connect(process=19035)
運行以上代碼,就會自動打開記事本記事本,如下
2、窗口選擇
打開這個窗口之后,我們要操作該窗口的話,那么就的先選中這個窗口,關于窗口的選擇有一下幾種方式
# 方式一 :不適用于窗口名為中文的wind_1 = app.窗口名 # 方式二 :窗口名可以為中文 wind_2 = app['窗口名']# 案例使用:選擇上面打開的計算器程序窗口wind_calc = app[’無標題 - 記事本’]
3、控件操作
程序窗口中的內容,把它稱之為控件,我們要對這個窗口的內容進行操作,就需要選擇到對應的控件,
獲取所有控件
我們可以通過print_control_identifiers()這個方法,來獲取這個窗口下的直接子控件,如下:
app[’無標題 - 記事本’].print_control_identifiers()
打印出來的結果如下:
上面打印出來的內容分別對應窗口種
選擇控件
關于控件選擇的方法有好幾種,最簡單的方法如下:
# 選擇控件的方法wind_calc = app['窗口名']['控件名']# 案例操作:選擇編輯窗口edit = app[’無標題 - 記事本’][’Edit’]
內容輸入
在上面選擇到編輯窗口之后,我們就可以進行內容輸入了,
內容輸入的方法:type_key()
# 在編輯欄種輸入內容edit.type_keys('檸檬班')edit.type_keys('python自動化')edit.type_keys('musen')
運行結果如下:
4、鍵盤操作
輸入完上述內容之后,接下來我們要修改編輯框中的內容,
通過鍵盤完成以下操作:全選(ctrl+A) 復制(ctrl+C) 粘貼(ctrl+V)
pywinauto.keyboard.send_key
pywinauto模擬操作鍵盤,需要使用到 pywinauto.keyboard.send_keys這個方法
# 導入模塊from pywinauto.keyboard import send_keys# 全選(ctrl+A) send_keys('^a')# 復制(ctrl+C) send_keys('^c')# 粘貼(ctrl+V)send_keys('^v')# 回車鍵send_keys('{VK_RETURN}')# 粘貼(ctrl+V)send_keys('^v')
常見的按鍵操作
字母按鍵用按鍵小寫字母表示
常用的一些按鍵
ESC鍵:VK_ESCAPE 回車鍵:VK_RETURN TAB鍵:VK_TAB Shift鍵:VK_SHIFT Ctrl鍵:VK_CONTROL Alt鍵:VK_MENU按鍵修飾符
# 對于一些常用的按鍵,可以通過修飾符來表示,使用的時候比較方便 ’+’: {VK_SHIFT} ’^’: {VK_CONTROL} ’%’: {VK_MENU} Alt鍵 # 上面:全選(ctrl+A) 復制(ctrl+C) 粘貼(ctrl+V)就使用的是修飾符^來代表ctrl更多的鍵盤操作大家可以參考官網文檔
5、鼠標操作
pywinauto. mouse
pywinauto操作鼠標,需要導入mouse模塊,mouse模塊中設置了一系列的鼠標操作事件
鼠標移動:move方法
move(coords=(x軸坐標,y軸坐標))
緩慢移動鼠標案例
for i in range(10): x = 10 * i y = 10 * i time.sleep(0.5) # 移動鼠標 mouse.move(coords=(x, y))
鼠標點擊:click
# button指定左擊還是右擊,coords指定鼠標點擊的位置# 3.1、鼠標單擊# 指定位置,鼠標左擊mouse.click(button=’left’, coords=(40, 40))# 指定位置 鼠標右擊# mouse.click(button=’right’, coords=(100, 200))# 3.2 鼠標雙擊mouse.double_click(button=’left’, coords=(140, 40))# 4 按下鼠標:press# 將屬性移動到(140,40)坐標處按下mouse.press(button=’left’, coords=(140, 40))# 5 釋放鼠標:repleace# 將鼠標移動到(300,40)坐標處釋放,mouse.release(button=’left’, coords=(300, 40))# 6、右鍵單擊指定坐標mouse.right_click(coords=(400, 400))# 7、鼠標中鍵單擊指定坐標(很少用的到)mouse.wheel_click(coords=(400, 400))# 8 滾動鼠標# coords:指定鼠標的坐標位置。# wheel_dist指定鼠標滾輪滑動的次數,正數往上,負數往下。mouse.scroll(coords=(1200,300),wheel_dist=-3)
五、說明
關于pywinauto模塊的基本使用就該大家介紹到這里了,對pc端自動化感興趣的同學可以往這個方向去深入學習。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. Django中的AutoField字段使用2. Django ORM實現按天獲取數據去重求和例子3. 解決docker與vmware的沖突問題4. IntelliJ Idea 2020.1 正式發布,官方支持中文(必看)5. IntelliJ IDEA設置自動提示功能快捷鍵的方法6. asp.net core應用docke部署到centos7的全過程7. Java 3D的動畫展示(Part1-使用JMF)8. Python基于jieba, wordcloud庫生成中文詞云9. 如何在vue3.0+中使用tinymce及實現多圖上傳文件上傳公式編輯功能10. 刪除docker里建立容器的操作方法
