在日常實施中,我們用控件對大部分的網頁和客戶端都能進行拾取操作。但是仍有一小部分的應用無法進行操作。這里我常用到 pyautogui 這個模塊。下面做個分享。
Python 的 pyautogui 模塊實現鼠標的自動移動以及鍵盤的自行輸入. 該模塊不是 Python 自帶的, 因此執行以下命令進行安裝
# pyautogui模塊依賴image模塊,沒有image會報ImportError: No module named ‘PIL‘錯誤
pip install image
pip install pyautogui
官方文檔介紹:https://pyautogui.readthedocs.io/en/latest/
import pyautogui
'''1.size(): 用於獲取屏幕分辨率'''
print("電腦當前的分辨率:",pyautogui.size())
print(type(pyautogui.size()))
'''2.moveTo(): 用於鼠標的移動 '''
pyautogui.moveTo(100,100,duration=1)
'''3.moveRel(): 根據當前位置, 相對移動鼠標指針'''
pyautogui.moveRel(0, 300, duration=1)
'''4.position(): 獲取當前鼠標指針的位置'''
print("獲取當前鼠標位置:",pyautogui.position())
''' 5.click(): 用於控制鼠標點擊和拖拽 '''
pyautogui.click(370, 120)
doubleClick() 雙擊
rightClick() 右擊
"""
6.有兩個與鼠標拖拽操作相關的函數: dragTo 和 dragRel. 它們的行為與 moveTo 和 moveRel 類似,
區別在於拖拽操作在移動的過程中, 會保持鼠標左鍵被按下.
該功能可用於不同的場景, 比如移動對話框,或在 Windows 的畫板程序中用鉛筆工具自動繪圖
"""
import pyautogui
import time
time.sleep(5) # 5秒種時間切換到畫板程序
pyautogui.moveTo(200, 200, duration=1) # 鼠標移動到(200,200)的位置
pyautogui.dragRel(100, 0, duration=1) #相對移動
pyautogui.dragRel(0, 100, duration=1) #相對移動
pyautogui.dragRel(-100, 0, duration=1) #相對移動
pyautogui.dragRel(0, -100, duration=1) #相對移動
""" 7.scroll(): 滾屏函數接受像素數作為參數, 並用給定的像素數向上滾屏 """
pyautogui.scroll(200) #向上回滾
#對選中的窗口進行向上滾屏200個像素點.當值為負數時,向下移動
'''8. typewrite(): 用於自動鍵入字符串, 只需將要鍵入的字符串傳遞給函數作為參數即可 '''
pyautogui.click(1000,400)
pyautogui.typewrite("hello word!")
#假設文本區域位於屏幕 (100, 200) 的坐標位置, 那么這段代碼將點擊文本區域, 激活它, 並鍵入‘hello word!
""" 9.傳遞鍵名: 可以向 typewrite() 函數傳入分離的鍵名 """
pyautogui.typewrite(['a','left','ctrlleft'])
#這段代碼等價於: 鍵入 "a", 然后敲擊左方向鍵, 再敲擊左 ctrl 鍵.
""" 10.熱鍵組合: hotkey() 可以模擬組合熱鍵, 比如: ctrl-c, ctrl-a, ctrl-v 等 """
# 1.模擬ctrl-v,復制功能
pyautogui.hotkey('ctrlleft','v')
# 等價於
pyautogui.keyDown('ctrl')
pyautogui.keyDown("shift")
pyautogui.keyDown('esc')
pyautogui.keyUp('esc')
pyautogui.keyUp('shift')
pyautogui.keyUp('ctrl')
""" 11.press() :鍵盤功能按鍵"""
pyautogui.press("enter") #鍵盤輸入一個 entr
pyautogui.press("f1") # press the F1 key
pyautogui.press("left") #按左箭頭鍵
""" 消息彈窗函數 """
#如果你需要消息彈窗,通過單擊OK暫停程序,或者向用戶顯示一些信息,消息彈窗函數就會有類似JavaScript的功能:
pyautogui.alert('這個消息彈窗是文字+OK按鈕') # 返回OK
pyautogui.confirm('這個消息單擊OK') # 返回輸入的字符串彈窗是文字+OK+Cancel按鈕‘) # 返回OK 或 Cancel
pyautogui.prompt('這個消息彈窗是讓用戶輸入字符串,單擊OK') # 返回輸入的字符串
