python?PyAutoGUI實現(xiàn)自動化鼠標鍵盤等常用操作
PyAutoGUI 使用介紹
這個 python 庫是我用的比較多的第三方庫了,因為它能幫我自動化操作許多事情,而且跨平臺,非常好用。可以說是 python 中的按鍵精靈了。它不僅可以操作鼠標,還能操作鍵盤,屏幕截圖,還能生成一些簡單的交互窗口,在自動化操作方面提供的功能還是非常全面的。
安裝
python3 -m pip install pyautogui -i https://mirrors.aliyun.com/pypi/simple
以下操作都是已經(jīng)引入了 pyautogui。
import pyautogui
鼠標操作
# 獲取屏幕分辨率 pyautogui.size() # 獲取當前鼠標所在位置 pyautogui.position()
這兩個方法分別是確定鼠標的移動范圍,確定當前鼠標的移動位置。
# 移動到 100, 200 的位置 pyautogui.moveTo(100, 200) # 基于以上位置 Y 軸移動 50 pyautogui.move(0, 50) # 在 2 秒內(nèi)按住鼠標左鍵拖動到 300, 400 的位置 pyautogui.dragTo(300, 400, 2, button='left') # 在 2 秒內(nèi)按住鼠標右鍵,基于以上位置 X 軸拖動 30 pyautogui.drag(30, 0, 2, button='right')
上述操作比較好理解,移動或者拖動鼠標。
# 開始慢,結(jié)束快 pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad) # 開始快,結(jié)束慢 pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad) # 開始和結(jié)束慢,中間快 pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad) # 彈跳移動到 100, 100 (移動范圍較?。? pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce) # 彈跳移動到 100, 100 (范圍較大) pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)
這部分操作在一些有人機檢測的系統(tǒng)中一定會用到。比如說我們經(jīng)常遇到網(wǎng)頁的驗證碼拖動圖片補全完整圖片,如果勻速拖動肯定是不行的,因為正常人的操作是不會勻速拖動鼠標;還有一種情況是在模擬操作游戲,如果鼠標移動過于死板,每次的動作幅度,路徑,點擊的坐標都相同,也會被檢測出使用了輔助軟件。所以在使用鼠標操作游戲的時候,一定要加入隨機量,比如鼠標移動的路徑要隨機,我們可以把上述參數(shù)放在列表中,每次隨機挑選移動方式,點擊的坐標隨機加或減幾個像素,每次點擊的停頓時間也隨機等等。一般這么操作就不會被查出來了。當然還需要根據(jù)玩家的平時在線時間來使用,不能說平時都是下午在線,然后突然每天黑夜刷很多小時。這樣的操作一般也會被警告(以我多年陰陽師玩家經(jīng)驗)。扯遠了,回正題。
# 點擊 pyautogui.click() # 移動到 100, 200 點擊 pyautogui.click(x=100, y=200) # 使用右鍵點擊,可選 left, middle, right pyautogui.click(button='right') # 雙擊 pyautogui.click(clicks=2) # 雙擊,單擊間隔時間 0.25 秒 pyautogui.click(clicks=2, interval=0.25) # 鼠標按下 pyautogui.mouseDown() # 鼠標抬起 pyautogui.mouseUp()
鍵盤操作
# 輸入,每個字符間隔 0.25 秒 pyautogui.write('Hello world!', interval=0.25) # 按住 shift pyautogui.keyDown('shift') # 按下 left 鍵 pyautogui.press('left') # 彈起 shift pyautogui.keyUp('shift')
上述操作實現(xiàn)按住 shift 同時按下 left 鍵。
如果需要按下多個鍵,可以使用:
pyautogui.press(['left', 'left', 'left'])
如果鍵相同可以:
pyautogui.press('left', presses=3)
pyautogui 支持的按鍵:
['\t','\n','\r',' ','!','"','#','$','%','&',"'",'(',')','*','+',',','-','.','/',
'0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','[','\\', ']',
'^', '_', '`', 'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback',
'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch',
'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright',
'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape',
'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18',
'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7',
'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert',
'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect',
'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2',
'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup',
'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift',
'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab','up',
'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright',
'yen', 'command', 'option', 'optionleft', 'optionright']
消息彈窗
alert()
pyautogui.alert(text='??這是一段警告', title='alert 測試', button='OK')
會彈出如下提示框:
confirm()
a = pyautogui.confirm(text='對話框測試', title='標題', buttons=['OK', 'Cancel']) print(a)
我這么寫你也應(yīng)該明白了,confirm()
方法會傳遞參數(shù)。這樣我們在操作過程中可以實現(xiàn)簡單選擇。
prompt()
a = pyautogui.prompt(text='請輸入學(xué)號', title='標題' , default='學(xué)號') print(a)
選擇 OK 獲取用戶輸入,選擇 Cancel 返回 None。
password()
a = pyautogui.password(text='輸入密碼', title='標題', default='', mask='*') print(a)
選擇 OK 獲取用戶輸入,選擇 Cancel 返回 None。只是輸入的字符串都會被 mask
代替。
屏幕截圖
pyautogui.screenshot('my_screenshot.png')
屏幕截圖比較有用,根據(jù)截圖找圖感覺精度不高,所以就不推薦了。
以上就是 pyautogui 的使用介紹了,基本包含了所有常用操作。
如果還覺得不夠可以看官方文檔[1]和源碼[2]。
引用鏈接
官方文檔: https://pyautogui.readthedocs.io/en/latest/index.html
源碼: https://github.com/asweigart/pyautogui
以上就是python PyAutoGUI實現(xiàn)自動化鼠標鍵盤等常用操作的詳細內(nèi)容,更多關(guān)于python PyAutoGUI自動化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)一個服務(wù)器監(jiān)聽多個客戶端請求
這篇文章主要為大家詳細介紹了Python如何實現(xiàn)一個服務(wù)器監(jiān)聽多個客戶端請求,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04基于Python+Matplotlib繪制漸變色扇形圖與等高線圖
這篇文章主要為大家介紹了如何利用Python中的Matplotlib繪制漸變色扇形圖與等高線圖,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下方法2022-04-04如何使用Python對NetCDF數(shù)據(jù)做空間相關(guān)分析
這篇文章主要介紹了如何使用Python對NetCDF數(shù)據(jù)做空間相關(guān)分析,幫助大家更好的理解和學(xué)習使用python,感興趣的朋友可以了解下2021-04-04Python如何利用struct進行二進制文件或數(shù)據(jù)流
這篇文章主要介紹了Python如何利用struct進行二進制文件或數(shù)據(jù)流問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01