Python调用PyAutoGUI模块
目錄
- GUI自動化工具
- 鼠標(biāo)
- 鼠標(biāo)移動
- 鼠標(biāo)拖動
- 鼠標(biāo) 補間/緩動
- 鼠標(biāo)點擊
- 鼠標(biāo)的滾動功能
- 鍵盤
GUI自動化工具
PyAutoGUI可在Windows / Mac / Linux和Python 2&3上運行。
pip install pyautogui
注意:在運行PyAutoGUI庫時請加入以下2行代碼,防止程序失控,進行補救措施
故障保護機制
在每次PyAutoGUI調(diào)用之后設(shè)置2.5秒的暫停:
當(dāng)故障安全模式為時True,將鼠標(biāo)移到左上角將會彈出pyautogui.FailSafeException,這可能會中止當(dāng)前運行的程序:
pyautogui.FAILSAFE = True # 保護措施,避免失控鼠標(biāo)
如果屏幕分辨率為1920*1080,那么左上角的坐標(biāo)為(0,0)
右下角的坐標(biāo)是(1919,1079)(因為坐標(biāo)始于0,而不是1)
X坐標(biāo)從左側(cè)的0開始,向右增加。
Y坐標(biāo)從頂部的0開始,向下增加。
鼠標(biāo)移動
例如
pyautogui.moveTo(100, 200) # 鼠標(biāo)移動到x軸100像素,y軸200像素的位置 pyautogui.moveTo(None, 300) # 鼠標(biāo)移動到x軸100像素,y軸300像素的位置 pyautogui.moveTo(400, None) # 鼠標(biāo)移動到x軸400像素,y軸300像素的位置 pyautogui.moveTo(x, y, [duration = t]) # 在給定時間內(nèi)將鼠標(biāo)移動到屏幕指定位置 duration(以秒為單位)x,y是目標(biāo)位置的橫縱坐標(biāo),duration指定鼠標(biāo)光標(biāo)移動到目標(biāo)位置所需要的秒數(shù),
t可以為整數(shù)或浮點數(shù),省略duration參數(shù)表示立即將光標(biāo)移動到指定位置
(在PyAutoGUI函數(shù)中,所有的duration關(guān)鍵字參數(shù)都是可選的)
如果持續(xù)時間小于pyautogui.MINIMUM_DURATION該運動將是即時的。默認pyautogui.MINIMUM_DURATION值為0.1。
這里的x,y不再是目標(biāo)位置的坐標(biāo),而是偏移量
例如:
鼠標(biāo)拖動
PyAutoGUI的dragTo()和drag()功能也有類似的參數(shù)作為moveTo()和move()功能。此外,他們有一個button可以被設(shè)置為關(guān)鍵字’left’,‘middle’,'right’在拖動時按住該鼠標(biāo)鍵不放。
pyautogui.dragTo(x, y, [duration=t], button='left') # 按住鼠標(biāo)左鍵,將鼠標(biāo)拖動到指定位置 pyautogui.dragTo(x, y, [duration=t], button='middle') # 按住鼠標(biāo)中鍵,將鼠標(biāo)拖動到指定位置 pyautogui.dragTo(x, y, [duration=t], button='right') # 按住鼠標(biāo)右鍵,將鼠標(biāo)拖動到指定位置這里的x,y不再是目標(biāo)位置的坐標(biāo),而是偏移量
使用方法和dragTo()一樣
鼠標(biāo) 補間/緩動
補間或緩動功能指示鼠標(biāo)移至目的地時的進度。通常,當(dāng)在一段時間內(nèi)移動鼠標(biāo)時,鼠標(biāo)將以恒定的速度沿直線直接移向目標(biāo)。這稱為線性補間或線性緩動函數(shù)。
PyAutoGUI在pyautogui模塊中還有其他補間功能。
moveTo(),move(),dragTo()和drag()方法都可以使用該功能,可通過傳遞第四個參數(shù)來使鼠標(biāo)光標(biāo)以指定的線性函數(shù)進行移動。
總持續(xù)時間仍與傳遞給函數(shù)的參數(shù)相同。
pyautogui.easeInQuad:開始緩慢移動,然后朝著目標(biāo)加快。
pyautogui.easeOutQuad:鼠標(biāo)指針開始移動速度快,但速度逐漸減慢
pyautogui.easeInOutQuad:開始和結(jié)束快,中間慢
pyautogui.easeOutQuad是相反的:把鼠標(biāo)指針開始移動速度快,但速度減慢,因為它接近目的地。
pyautogui.easeOutElastic將沖過目標(biāo)進行“橡皮筋”式來回移動直到它穩(wěn)定在目的地。
這些補間功能是從Al Sweigart的PyTweening模塊復(fù)制的:
https://github.com/asweigart/pytweening
不必安裝此模塊即可使用補間功能。
如果要創(chuàng)建自己的補間函數(shù),請定義一個函數(shù),該函數(shù)在0.0(代表鼠標(biāo)移動的起點)和1.0(代表鼠標(biāo)移動的終點)之間使用單個float參數(shù),并在0.0和之間返回一個float值1.0。
鼠標(biāo)點擊
click() 、rightClick() 、middleClick()、 doubleClick()、tripleClick()均可傳遞以下參數(shù):
x和y:將鼠標(biāo)移動到目標(biāo)區(qū)域
duration:鼠標(biāo)移動目標(biāo)位置的時間
button:要指定不同的鼠標(biāo)鍵點擊,‘left’ 左鍵,'middle’中鍵, 'right’右鍵
clicks:要進行多次單擊,請將整數(shù)傳遞給clicks關(guān)鍵字參數(shù)
interval:指定點擊之間的暫停量(以秒為單位)
moveTo()與click() 在點擊之前合并調(diào)用,可以為click()傳遞x, y參數(shù):
pyautogui.click(x, y) # 移動到目標(biāo)位置,使用鼠標(biāo)左鍵點擊要指定不同的鼠標(biāo)鍵點擊,傳遞’left’,‘right’,'middle’等參數(shù):
pyautogui.click(x, y, [button='left/right/middle'])要進行多次點擊,請將整數(shù)傳遞給clicks關(guān)鍵字參數(shù)。
pyautogui.click(clicks=2) # 連續(xù)點擊2次pyautogui.click(clicks=2) # 連續(xù)點擊3次interval關(guān)鍵字參數(shù),是以指定兩次點擊之間的暫停時間(以秒為單位)
pyautogui.click(clicks=2, interval=0.25) # 連續(xù)點擊2次,兩次點擊之間的暫停時間0.25秒綜合使用
pyautogui.click(x=100, y=200, duration=2, clicks=2, interval=0.25, button='right')# 移動到x軸100像素 y軸200像素的位置,移動時間為2秒# 進行右鍵點擊2次,每次點擊間隔時間0.25秒鼠標(biāo)單擊和拖動包括按下鼠標(biāo)按鈕并向上釋放鼠標(biāo)按鈕。
如果要單獨執(zhí)行這些操作,請調(diào)用mouseDown()和mouseUp()方法。
例如
pyautogui.mouseDown(button='left', x=100, y=200, duration=2) # 先移動到目標(biāo)位置按下鼠標(biāo)左鍵(開始) pyautogui.mouseUp(button='left', x=300, y=400, duration=2) # 移動到目標(biāo)位置后釋放鼠標(biāo)左鍵(結(jié)束)此方法是將 dragTo()方法的拖動效果 拆開使用。可控制鼠標(biāo)的點擊和釋放效果。
鼠標(biāo)的滾動功能
可以通過調(diào)用scroll()方法并傳遞整數(shù)來滾動鼠標(biāo)滾輪。
pyautogui.scroll(50) # 控制窗口上下滾動(滾動發(fā)生在鼠標(biāo)的當(dāng)前位置)填入正數(shù)為向上滾動 pyautogui.scroll(-50) # 控制窗口上下滾動(滾動發(fā)生在鼠標(biāo)的當(dāng)前位置)填入負數(shù)為向下滾動在不同平臺上,滾動量會有所不同。(可選)可以傳遞x和y參數(shù),以在執(zhí)行滾動之前移動鼠標(biāo)光標(biāo)。
例如
在OS X和Linux平臺上,PyAutoGUI也可以通過調(diào)用hscroll()函數(shù)執(zhí)行水平滾動。
pyautogui.hscroll(10) # 向右滾動 pyautogui.hscroll(-10) # 向左滾動鍵盤
typewrite() 方法 模擬鍵盤輸
要在按下每個字符鍵之間添加延遲間隔,請為interval關(guān)鍵字參數(shù)傳遞一個int或float值。
pyautogui.typewrite('Hello world!', interval=0.25) # 從鍵盤輸入Hello world,每隔0.25秒輸入一個字符除了單個字符串,還可以向typewrite()函數(shù)傳遞鍵字符串的列表
例如:
typewrite()只能按下單字符鍵,無法按Shift或ctrl等組合鍵。
注意:只能輸入英文
還可以將字符串列表傳遞給press()
例如
利用press()方法可以實現(xiàn)中文輸入
例如
press()方法實際上只是keyDown()和keyUp()函數(shù)的包裝,它們模擬按下一個鍵然后釋放它。
例如:
總結(jié)
pyautogui.keyDown() #根據(jù)傳入的鍵字符串,向計算機發(fā)送虛擬的按鍵(按下)
pyautogui.keyUp() #根據(jù)傳入的鍵字符串,向計算機發(fā)送虛擬的釋放(釋放)
pyautogui.press() #前面兩個方法的封裝,模擬完整的擊鍵(按下并釋放)
為了方便快捷地按下熱鍵或鍵盤快捷鍵,hotkey()可以傳遞幾個鍵的字符串,這些字符串將按順序按下,然后以相反的順序釋放。
例如:
例如:
pyautogui.hotkey('ctrl','c')# 相當(dāng)于pyautogui.keyDown('ctrl')pyautogui.keyDown('c')pyautogui.keyUp('c')pyautogui.keyUp('ctrl') pyautogui.hotkey('ctrl','v')# 相當(dāng)于pyautogui.keyDown('ctrl')pyautogui.keyDown('v')pyautogui.keyUp('v')pyautogui.keyUp('ctrl')pyautogui.hotkey() # 接收多個字符串參數(shù),順序按下,再按相反的順序釋放
通過對以下是有效字符串press(),keyDown(),keyUp(),和hotkey()功能:
[’\t’, ‘\n’, ‘\r’, ’ ‘, ‘!’, ‘"’, ‘#’, ‘$’, ‘%’, ‘&’, "’", ‘(’,
‘)’, ‘*’, ‘+’, ‘,’, ‘-’, ‘.’, ‘/’, ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
‘8’, ‘9’, ‘:’, ‘;’, ‘<’, ‘=’, ‘>’, ‘?’, ‘@’, ‘[’, ‘\’, ‘]’, ‘^’, ‘_’, ‘`’,
‘a(chǎn)’, ‘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’, ‘{’, ‘|’, ‘}’, ‘~’,
‘a(chǎn)ccept’, ‘a(chǎn)dd’, ‘a(chǎn)lt’, ‘a(chǎn)ltleft’, ‘a(chǎn)ltright’, ‘a(chǎn)pps’, ‘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’]
完整的鍵盤鍵字符串如下:
| ‘a(chǎn)’,‘b’,‘c’,‘A’,‘C’,‘1’,‘2’,‘3’,’!’,’@’,’#'等 | 單個字符的鍵 |
| ‘enter’ | 回車 |
| ‘esc’ | ESC鍵 |
| ‘shiftleft’,‘shiftright’ | 左右Shift鍵 |
| ‘a(chǎn)ltleft’,‘a(chǎn)ltright’ | 左右Alt鍵 |
| ‘ctrlleft’,‘ctrlright’ | 左右Ctrl鍵 |
| ‘tab’(or ‘\t’) | Tab鍵 |
| ‘backspace’,‘delete’ | Backspace鍵和Delete鍵 |
| ‘pageup’,‘pagedown’ | Page Up 和Page Down鍵 |
| ‘home’,‘end’ | Home鍵和End鍵 |
| ‘up’,‘down’,‘left’,‘right’ | 上下左右箭頭鍵 |
| ‘f1’,‘f2’,'f3’等 | F1至F12鍵 |
| ‘volumemute’,‘volumeup’,volumedown’ | 靜音,放大音量和減小音量鍵 |
| ‘pause’ 暫停鍵 | |
| ‘capslock’,‘numlock’,‘scrolllock’ | Caps Lock,Num Lock和 Scroll Lock鍵 |
| ‘insert’ | Insert鍵 |
| ‘printscreen’ | Prtsc或Print Screen鍵 |
| ‘winleft’,‘winright’ | 左右Win鍵(在windows上) |
| ‘command’ | Command鍵(在OS X上) |
| ‘option’ | Option鍵(在OS X上) |
總結(jié)
以上是生活随笔為你收集整理的Python调用PyAutoGUI模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python爬虫彩票数据(120期)爬取
- 下一篇: websocket python爬虫_p