Python自動化工具 – PyAutoGUI 釋放你的雙手

python_automation_tools

目的

還記得小時候玩Game的時候,為了重複性的練功,會下載按鍵精靈這樣的工具程式來編排巨集指令,讓遊戲角色自動練功,釋放雙手。 PyAutoGUI就是這樣的東西,也許有人不知道按鍵精靈是怎樣的程式,但簡單來說,就是透過程式,來模擬人類操作滑鼠、鍵盤的行為,來達到自動化。 而PyAutoGUI,使用了python這樣的語言,讓使用者可以不只控制鍵盤滑鼠、還能透過比對畫面上的圖片,來做出滑鼠的點選。是不是相當有趣,而且這樣很貼近使用者的上層開發工具,也可以同時跟其他套件:例如 – Selenium等結合。做出更厲害的自動化腳本。

在開始之前,請確認你已經有Python開發的環境與工具,若你還沒準備好,可以參考這篇,安裝好開發環境再回來繼續學習。

Python超好用基本開發工具 – Anaconda + Atom Editor with Packages

另外,若您想要的是透過自動化程式控制瀏覽器,下面這篇也可以參考

Python自動化工具 – Selenium 機器人般的瀏覽器

什麼是PyAutoGui?

除了一般的功能以外,主要PyAutoGUI 控制自動化的方式可以分成下面四個類別:

Mouse

控制滑鼠移動、左鍵、右鍵等。

Keyboard

模擬按鍵、組合鍵。關於按鍵的控制,這邊有更詳細的說明

Message Box

可以控制用JavaScript樣式的訊息對話框,這邊有更詳盡的說明

Screenshot

透過螢幕擷取、比對圖片找出位置,進行其他滑鼠鍵盤的搭配控制。

如何安裝?

安裝的方式非常簡單,若您也是使用下面這篇的教學方法所建立的開發環境

Python超好用基本開發工具 – Anaconda + Atom Editor with Packages

恭喜你,那安裝的方式非常簡單。

只要在虛擬環境的終端機內,輸入

pip install pyautogui 
或是
conda install -c conda-forge pyautogui

任選其中一種即可, 等它跑完就完成了。

開始試用

PyAutoGUI最常用的一定是控制滑鼠鼠標移動,但是在移動之前,我們必須要先知道滑鼠回報的位置。因此我們可以先撰寫下面的程式碼,透過displayMousePosition() 的function 來持續回報滑鼠座標,如此一來就能逐步記錄你想點擊的按鈕或圖片位置。

import pyautogui
pyautogui.displayMousePosition()

按下F5 執行,接著可以試試看移動滑鼠,就能很明顯看到視窗裡面的座標數值不停的變化。 X ,Y 值就是滑鼠在你的螢幕上的位置;如此一來,就能把你要控制的地方,預先做個紀錄。

這個function會不停地回報滑鼠位置

接下來我們試試看,以Twitter的註冊頁面為例子,初步了解一下如何應用pyAutoGUI 進行程式撰寫。

先抓出各個按鈕在螢幕上X,Y座標

用下面的程式碼,測試一下

import pyautogui

#暫停10秒,等待網頁視窗安置好
pyautogui.PAUSE=10
#滑鼠移動到註冊
#移動到 1951 , 792 花 1 秒的時間移動過去
pyautogui.moveTo(1951,792,1)
#滑鼠左鍵點擊一下
pyautogui.click()

#暫停1秒,等待網頁載入
pyautogui.PAUSE=1

果然,滑鼠自動移動到註冊按鈕的位置,並且完成自動點擊。如此一來就能搭配下面的指令查找表,來組合出更多的應用了。

常用指令查找表

下面連結是官方的說明文件 – Cheat-Sheet

https://pyautogui.readthedocs.io/en/latest/quickstart.html#cheat-sheet

Cheat Sheet

結論

相較於其他自動化的套件;如Selenium或Scrapy,這個pyAutoGUI更多了一點人味,可以透過滑鼠的移動,甚至自己加上亂數的等待秒數,或是產生非線性的滑鼠移動軌跡,都能大大的模擬出真人操作的感覺,在某些特別防備機器人網站,能讓自動化擁有更多的彈性。

另外,視覺化與直觀的編程思路,也讓新手或是一般非程式設計人員更容易切入自動化的領域。

若能整合其他工具,例如Selenium等,幾乎在網頁自動化的領域上,涵蓋了各種應用情境。總之,若您有在用Python或有自動化的需求; PyAutoGUI 實在是非常推薦,讓人非學不可且容易上手的套件。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *