目的
還記得小時候玩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 值就是滑鼠在你的螢幕上的位置;如此一來,就能把你要控制的地方,預先做個紀錄。
接下來我們試試看,以Twitter的註冊頁面為例子,初步了解一下如何應用pyAutoGUI 進行程式撰寫。
用下面的程式碼,測試一下
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
結論
相較於其他自動化的套件;如Selenium或Scrapy,這個pyAutoGUI更多了一點人味,可以透過滑鼠的移動,甚至自己加上亂數的等待秒數,或是產生非線性的滑鼠移動軌跡,都能大大的模擬出真人操作的感覺,在某些特別防備機器人網站,能讓自動化擁有更多的彈性。
另外,視覺化與直觀的編程思路,也讓新手或是一般非程式設計人員更容易切入自動化的領域。
若能整合其他工具,例如Selenium等,幾乎在網頁自動化的領域上,涵蓋了各種應用情境。總之,若您有在用Python或有自動化的需求; PyAutoGUI 實在是非常推薦,讓人非學不可且容易上手的套件。