调用Python的PyAutoGUI模块模拟登录QQ邮箱
??PyAutoGUI模塊可以模擬鍵盤和鼠標操作,同時還支持基于圖片查找屏幕中的指定內容。本文嘗試模擬鼠標和鍵盤操作通過瀏覽器登錄QQ郵箱。
??最初的想法是通過瀏覽器圖標定位瀏覽器,然后啟動瀏覽器,再定位到輸入欄輸入QQ郵箱地址后登錄郵箱,這種方式主要是要能通過圖片準確定位到所需點擊或輸入內容的位置,然后再模擬鼠標和鍵盤操作。但是編寫程序過程中卻發現,最簡單的還是通過坐標定位,由于屏幕大小固定,所需點擊或輸入內容的位置也固定,只要預先計算坐標,直接將鼠標移動到坐標處進行處理即可。同時PyAutoGUI網站的幫助文檔(參考文獻1)中給出了獲取當前鼠標位置的示例代碼,可以輕松地獲取所需的坐標位置,示例代碼如下圖所示:
??獲取到坐標后,代碼寫起來也比較簡單,大致思路就是將鼠標移動到指定位置,模擬鼠標點擊或鍵盤輸入,但是實際執行過程中遇到了以下問題:
- 模擬鼠標雙擊沒有反應。這個在之前的文章中已經討論過,主要是被360安全軟件攔截了。目前有效的解決辦法是將瀏覽器圖標固定到任務欄中,然后單擊任務欄中的瀏覽器圖標啟動瀏覽器;
- 清除瀏覽器地址欄。打開瀏覽器后,地址欄中默認有內容,或者是空白頁,或者是默認的訪問地址,此時定位到地址欄輸入內容的話,會將輸入內容插入到默認內容中。瀏覽器打開時,如果地址欄有內容,默認是選中的,因此先模擬按delete鍵,再輸入內容;
- 瀏覽器默認輸入法。本人瀏覽器中默認輸入法為中文,因此在瀏覽器中輸入QQ郵箱地址后,如果僅模擬一次回車,只是會將郵箱地址錄入到地址欄,并不會跳轉到QQ郵箱網站,需要模擬兩次回車才能跳轉;
- 輸入郵箱賬號。跳轉到QQ郵箱網站后,賬號輸入框默認顯示上次登錄時的賬號信息,需要清空賬號輸入框內容后再輸入賬號,本文中模擬鼠標移動到輸入框內,然后模擬全選鍵ctrl+a,再模擬delete鍵清空內容,這樣就可以輸入賬號。
??由于是在常用電腦中登錄QQ郵箱,登錄時沒有進行圖片驗證,輸入賬號和密碼后,點擊登錄按鈕就直接登進郵箱了,完整的代碼如下所示:
# coding=utf-8import pyautogui import time#啟動瀏覽器 pyautogui.moveTo(345,554,2) pyautogui.click() time.sleep(2)#移動到地址欄并刪除地址欄選中內容 pyautogui.moveTo(456,140,2) pyautogui.press('del') pyautogui.click() time.sleep(2)#輸入qq郵箱地址 pyautogui.typewrite('mail.qq.com') pyautogui.press('enter') pyautogui.press('enter')#輸入qq郵箱賬號和密碼 pyautogui.moveTo(980,220,2) pyautogui.click() time.sleep(1) pyautogui.hotkey('ctrl', 'a') pyautogui.typewrite('12345678') time.sleep(1) pyautogui.moveTo(980,280,1) pyautogui.click() time.sleep(1) pyautogui.typewrite('XXXXXXXX')#點擊登錄郵箱 pyautogui.moveTo(1127,462,1) pyautogui.click() time.sleep(2)??代碼比較簡單,主要是因為沒有圖片驗證就直接登進郵箱了,如果是在不常用電腦上登錄的話,還需要經過2道圖片驗證后才能登錄,由于圖片驗證比較復雜(一個是拼圖,另一個是點字),再使用PyAutoGUI模塊模擬登錄就不知道行不行了。
參考文獻:
[1]https://pyautogui.readthedocs.io/en/latest/
總結
以上是生活随笔為你收集整理的调用Python的PyAutoGUI模块模拟登录QQ邮箱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 把键盘上的 确认键 变
- 下一篇: python处理时间格式时分秒_pyth