目的:
根據先前的學習,我們對於python自動化應該有概念了,因此學習最重要的目的是使用,本文會透過自動化註冊Twitter的範例,讓初學者知道怎麼規劃、撰寫程式碼;完成一套自動化程式。
若您還沒有使用過Python,也還沒有設定開發環境,可以先看看此篇:
Python 超好用基本開發工具 – Anaconda + ATOM editor with packages
動手試試看:
還記得要怎麼開始嗎? 若完全忘記的人或還沒安裝這個套件的人;可以參考此篇 :
Python – 自動化工具 PyAutoGUI 釋放你的雙手
文章裡面有提到抓取滑鼠位置的功能,務必一定要善用。
import pyautogui
pyautogui.displayMousePosition()
透過這個方法,我們把整個註冊流程走一遍。並且把每一個需要點擊的地方,座標記錄起來。類似這樣:
註冊
1951 792
姓名
1111 550
輸入姓名
改用電子郵件
1043 730
電子郵件
1100 673
輸入email位址
月
1100 866
選擇
日
1330 866
選擇
年
1482 866
選擇
下一步
1538 440
下一步
1538 440
註冊
1351 884
下面已經將每個步驟,用PyAutoGUI的語法,編程好了,可以直接複製貼上到ATOM裡面。
提醒一下,每個人的螢幕因為解析度不同,所以座標點會不一樣,若直接複製下面的程式碼,可能會造成對位不同。所以本文只是提供一個開發的範例,可依照不同的需求自己更改套用。
import pyautogui
#暫停10秒,等待網頁視窗安置好
pyautogui.PAUSE=10
#滑鼠移動到註冊
#移動到 1951 , 792
pyautogui.moveTo(1951,792,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#滑鼠移動到姓名
#移動到 1111 , 550
pyautogui.moveTo(1111,550,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#輸入姓名
#名字可以自己更改
pyautogui.write('pyautogui')
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#滑鼠移動到改用電子郵件
#移動到 1043 , 730
pyautogui.moveTo(1043,730,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#滑鼠移動到電子郵件
#移動到 1100 , 673
pyautogui.moveTo(1100,673,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#暫停0.5秒,等待網頁載入
pyautogui.PAUSE=0.5
#輸入email
#email也可以改成你想要的
pyautogui.write('pyautoguitester@gmail.com')
#滑鼠移動到月
#移動到 1100 , 866 一開始移動快 快到的時候慢
pyautogui.moveTo(1100,866,1,pyautogui.easeOutQuad))
#滑鼠左鍵點擊一下
pyautogui.click()
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#按 下 鍵 8 下
for i in range(8):
pyautogui.PAUSE=0.1
pyautogui.press('down')
#滑鼠移動到日
#移動到 1330 , 866
pyautogui.moveTo(1330,866,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#按 下 鍵 5 下
for i in range(5):
pyautogui.PAUSE=0.1
pyautogui.press('down')
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#滑鼠移動到年
#移動到 1482 , 866
pyautogui.moveTo(1482,866,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#按 下 鍵 10 下
for i in range(20):
pyautogui.PAUSE=0.1
pyautogui.press('down')
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#滑鼠移動到下一步
#移動到 1538 , 440
pyautogui.moveTo(1538,440,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#滑鼠左鍵點擊一下,繼續下一步
pyautogui.click()
#滑鼠移動到註冊
#移動到 1351 , 884
pyautogui.moveTo(1351,884,1)
#滑鼠左鍵點擊一下
pyautogui.click()
#暫停1秒,等待網頁載入
pyautogui.PAUSE=1
#完成,自動註冊帳號!
結果:
實際看一下成果吧!
這邊有幾個要訣跟大家分享
- 最前面啟動程式的時候,最好預留一點時間,幫忙開好視窗。然後就不要 移動滑鼠了 。
- 在自動化運作的期間,不要做任何電腦的操作,以免造成座標偏移,導致自動化失效。
- 某些按鍵輸入,建議要讓它有些停等,或等待仔入,以免網頁還沒載入,pyAutoGUI 已經跑到下一步,造成後面的錯誤。
小結:
本次實際帶大家透過Twitter的首頁,了解並使用pyAutoGUI自動化的開發方式,逐步把程式碼填出來,相信有跟著實際操作的人,一定會相當有成就感。
不過一旦開始實際製作以後,就會發現在頁面控制的部分,PyAutoGUI仍有些不足,例如:完成註冊以後,需要去註冊的電子郵件信箱內,擷取認證碼。再次回填,這樣的步驟,若用PyAutoGUI來達成,則需要另外控制滑鼠或是快速鍵再次開啟新的視窗或分頁,並且登入信箱等等。
這些繁瑣的步驟,其實若與Selenium整合一起用的話,可以節省開發與來回測試的大量時間。 相信師父領進門,修行在個人,大概就是這個意思了。到目前為止,我相信大家都有能力自己開發不同的應用,例如 :自動訂票系統、搶票系統等等。 是不是相當實用呢?