厭倦了重複操作?來看看python這個實例

之前寫過這樣一篇介紹按鍵精靈的文章:

按鍵精靈實例 – 志願者打卡後臺設置一鍵搞定

,大意就是通過按鍵精靈來模擬鼠標鍵盤操作,完成一系列的繁瑣操作。

今天來給大家分享一下用python模擬鼠標鍵盤操作的實例,相比而言python提供的功能更爲強大也更爲簡便一些。

需求背景

情況是這樣的,需要將一批“身份證號碼”和“手機號碼”(約400多個)一個一個在某個系統平臺進行登錄操作(只需要進行登錄即可,這個目的本身就很費解),這個平臺如下:

部分賬號截圖如下:

輸入完成後,點擊登錄,進入下圖界面,然後點擊“切換”,再進行下一個賬號登錄即可。

依次將表格裏面的所有400多個“身份證號碼”和“手機號碼”都按上面的步驟登錄一遍,即完成任務。

問題分析

就單這個任務而言,除了繁瑣、浪費時間一些,其他的貌似也沒有什麼難的地方(其實最疑惑的就是做這個事情本身的目的何在,但就是有某些領導要求這麼幹,姑且也就撇開不說。)

python裏面有多個可以操作鍵盤和鼠標的庫,永恆君這裏使用的是pyautogui

上面的一系列操作,主要就是由下面的這些動作構成的:

1)移動鼠標,x,y 表示要移動的座標位置,0.25表示完成這個移動的總時間

pyautogui.moveTo(x, y, duration=0.25)  

2)單擊鼠標,left表示左鍵,right則是右鍵

pyautogui.click(button='left')

3)鍵盤輸入內容,“abc”爲輸入的內容字符,0.1表示輸入每個字符間隔的時間

pyautogui.typewrite(“abc”,0.1)

4)讀取excel中“身份證號”和“手機號”,這裏直接只用pandas庫

pandas.read_excel("id_phone.xlsx")

整個操作過程就是這樣:

1)讀取excel獲取所有的“身份證號”和“手機號” ;
2)鼠標移動到“身份證號”的位置,單擊左鍵,輸入第一個“身份證號”;
3)鼠標移動到“手機號”的位置,單擊左鍵,輸入對應的第一個“身份證號”;
4)點擊登錄,鼠標移動到“切換”的位置,點擊;
5)重複2-4步,依次輸入後面的“身份證號”和“手機號”

問題解決

這裏首先一個問題,鼠標移動的位置的座標如何來確定?比較簡單的方法是使用微信的截圖工具,點開後,鼠標旁邊有個小框,POS就是顯示當前的鼠標座標,如下圖:

你只需要移動到對應的位置,記錄座標值即可,像永恆君這樣:

id_position = (525, 302) #id位置
phone_position = (579, 378)#輸入電話位置
login_position = (618, 469)#點擊登錄位置
change_account_pos = (788,206)#點擊切換位置

接下來是讀取excel獲取所有的“身份證號”和“手機號” 

df = pd.read_excel("id_phone.xlsx")
id_num = df["身份證號碼"].astype("str")
phone_num = df["聯繫電話"].astype("str")

然後是移動並輸入“身份證號”、“手機號碼”,這裏直接定義兩個函數來表示這個輸入動作。

def input_id(x,y,id_num): #輸入身份證號的動作
    pyautogui.moveTo(x, y, duration=0.25)         
    pyautogui.click(button='left')
    time.sleep(0.5)
    pyautogui.typewrite(id_num,0.1)
    time.sleep(0.5)

def input_phone(x,y,phone_num):#輸入電話號碼的動作
    pyautogui.moveTo(x, y, duration=0.25)           
    pyautogui.click(button='left')
    time.sleep(0.5)
    pyautogui.typewrite(phone_num,0.1)
    time.sleep(0.5)

接着是“登錄”、“切換”,同樣也是定義兩個函數。

def login(x,y):#登錄的動作
    pyautogui.moveTo(x, y, duration=0.25)
    pyautogui.click(button='left')
    time.sleep(0.5)
    pyautogui.moveRel(-8, -36, duration=0.25)
    pyautogui.click(button='left')
    time.sleep(5)

def change_account(x,y):#切換賬號的動作
    pyautogui.moveTo(x, y, duration=0.25)
    pyautogui.click(button='left')
    time.sleep(0.5)
    pyautogui.moveRel(-108, 94, duration=0.25)
    pyautogui.click(button='left')
    time.sleep(0.5)

最後將上面的所有動作都整合起來用一個函數表示,方便進行調用,即進行一次登錄操作需要進行的所有步驟。

def accouts_login(id_num,phone_num):#從登錄並切換賬號的完整動作
    input_id(id_position[0], id_position[1],id_num)
    input_phone(phone_position[0], phone_position[1],phone_num)
    login(login_position[0], login_position[1])
    change_account(change_account_pos[0],change_account_pos[1])

效果演示

操作的步驟之間,永恆君加了一些等待時間,避免出現網絡、平臺的延時、卡頓造成的錯誤,自然運行的時間也會增加。

python操作鼠標鍵盤_騰訊視頻

如果手工輸入的話,完成一個平均要花費20s以上。用python的話,只需要大約10s左右,能節省至少一半的時間,還是不錯的。

如果你感興趣的話,可以wx公號後臺回覆“重複操作”獲取源文件,如果有需求或者疑問的話,隨時歡迎聯繫我來交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章