1. 程式人生 > 程式設計 >PythonPC客戶端自動化實現原理(pywinauto)

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)

執行以上程式碼,就會自動開啟記事本記事本,如下

PythonPC客戶端自動化實現原理(pywinauto)

2、視窗選擇

開啟這個視窗之後,我們要操作該視窗的話,那麼就的先選中這個視窗,關於視窗的選擇有一下幾種方式

# 方式一 :不適用於視窗名為中文的
wind_1 = app.視窗名 
​
# 方式二 :視窗名可以為中文 
wind_2 = app["視窗名"]
​
# 案例使用:選擇上面開啟的計算器程式視窗
wind_calc = app['無標題 - 記事本']

3、控制元件操作

程式視窗中的內容,把它稱之為控制元件,我們要對這個視窗的內容進行操作,就需要選擇到對應的控制元件,

獲取所有控制元件

我們可以通過print_control_identifiers()這個方法,來獲取這個視窗下的直接子控制元件,如下:

app['無標題 - 記事本'].print_control_identifiers()

打印出來的結果如下:

PythonPC客戶端自動化實現原理(pywinauto)

上面打印出來的內容分別對應視窗種

選擇控制元件

關於控制元件選擇的方法有好幾種,最簡單的方法如下:

# 選擇控制元件的方法
wind_calc = app["視窗名"]["控制元件名"]
# 案例操作:選擇編輯視窗
edit = app['無標題 - 記事本']['Edit']

內容輸入

在上面選擇到編輯視窗之後,我們就可以進行內容輸入了,

內容輸入的方法:type_key()

# 在編輯欄種輸入內容
edit.type_keys("檸檬班")
edit.type_keys("python自動化")
edit.type_keys("musen")

執行結果如下:

PythonPC客戶端自動化實現原理(pywinauto)

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',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端自動化感興趣的同學可以往這個方向去深入學習。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。