全局使用模块
import pyautogui
防故障
pyautogui.FAILSAFE = True
pyautogui.PAUSE = 1
公共参数
(duration = 1) duration 的作用是设置移动时间,所有的gui函数都有这个参数,而且都是可选参数
屏幕
坐标
0,0 X increases -->
+---------------------------+
| | Y increases
| | |
| 1920 x 1080 screen | |
| | V
| |
| |
+---------------------------+ 1919, 1079
pyautogui.size() (1920, 1080)屏幕尺寸
pyautogui.position() (187, 567)鼠标绝对位置
pyautogui.onScreen(x,y) 判断坐标(x,y)是否在屏幕内,返回True,Flase 以右上角为(0,0)点
pyautogui.mouseInfo()
pyautogui.onScreen(x, y)
鼠标功能
公共参数:
(x=距离, y=距离, clicks=点击次数, interval=间隔时间, duration=移动间隔,button='按键')
pyautogui.click(x, y, button='left/right/middle')
还可以有: interval=0.5间隔时间 duration=0.2移动间隔(不指定则立即移动)
pyautogui.rightClick(x,y)
pyautogui.middleClick(x,y)
pyautogui.doubleClick(x,y)
pyautogui.doubleClick(x=100, y=150, button="left")
pyautogui.tripleClick()
pyautogui.leftClick()
pyautogui.middleClick()
pyautogui.tripleClick()
pyautogui.mouseDown()
pyautogui.mouseUp()
pyautogui.mouseDown(button='right')
pyautogui.mouseUp(button='right', x=100, y=200)
pyautogui.moveTo(x, y,s)
pyautogui.moveRel(x, y, duration=4)
pyautogui.dragTo(x, y,duration=间隔时间,button='right/left/middle')
pyautogui.dragRel(x, y,duration=间隔时间,button='right/left/middle')
pyautogui.scroll(参数)
pyautogui.scroll(10, x=100, y=100)
键盘功能
pyautogui.press('key',presses=按下次数,interval=间隔时间)
pyautogui.press(['key1', 'key2', 'key3'])
pyautogui.keyDown('key')
pyautogui.keyUp('key')
pyautogui.hotkey('key1', 'key2', 'key3')
pyautogui.typewrite("message",interval=0.5)
pyautogui.typewrite('key1', 'key2', 'key3', 'key4')
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=键入时间)
pyautogui.write("内容", interval=字符写入间隔时间)
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad)
pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad)
pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad)
pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce)
pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic)
Keys
KEYBOARD_KEYS
以下是有效字符串传递给press(),keyDown(),keyUp(),和hotkey()功能:
['\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']
键盘字符串 说明
enter(或return 或 \n) 回车
esc ESC键
shiftleft, shiftright 左右SHIFT键
altleft, altright 左右ALT键
ctrlleft, ctrlright 左右CTRL键
tab (\t) TAB键
backspace, delete BACKSPACE 、DELETE键
pageup, pagedown PAGE UP 和 PAGE DOWN键
home, end HOME 和 END键
up, down, left,right 箭头键
f1, f2, f3…. f12 F1…….F12键
volumemute, volumedown,volumeup 声音变大变小静音(有些键盘没有)
pause PAUSE键,暂停键
capslock CAPS LOCK 键
numlock NUM LOCK 键
scrolllock SCROLLLOCK 键
insert INSERT键
printscreen PRINT SCREEN键
winleft, winright Win键(windows )
command command键(Mac OS X )
option option(Mac OS X)
窗口功能
弹框
print(pyautogui.alert(title='标题', text='窗口内容', button='OK'))
print(pyautogui.confirm(title='标题', text='窗口内容()', buttons=['OK', 'Cancel']))
print(pyautogui.prompt(text='', title='', default=''))
print(pyautogui.password(title='', text='', default='', mask='*'))
截图
im = pyautogui.screenshot()
im = pyautogui.screenshot('保存位置/x.png', region=(0, 0, 300, 400)) 截取屏幕上指定目标区域,并且截图保存到指定位置
目标点 目标点宽度 长度( 捕获的区域的左、上、宽和高 )
im.save('屏幕截图.png')
im.getpixel((500, 500))
pyautogui.pixelMatchesColor(500, 500, (12, 120, 400))
图像识别
pyautogui.locateCenterOnScreen('图片.png')
根据指定区域的图像与pyautogui自动后台获取的图像进行对比/(根据指定位置像素点进行对比),返回比对后指定区域的中心坐标。
过程1:获取屏幕截图
im = pyautogui.screenshot()
im.save('屏幕截图.png')
过程2: 识别图像 主要
btm = pyautogui.locateOnScreen('zan.png')
print(btm)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm))
pyautogui.locateCenterOnScreen(‘image’, region=(x,y,w,h) )
图片匹配功能,查找image图片在屏幕中的位置,region限制查找范围
pyautogui.locateOnScreen('dz.png', confidence=0.7)
pyautogui.locateCenterOnScreen('R.png')
一步到位: pyautogui.moveTo('star.png') 直接移动到目标区域(底层调用上方识别函数,可能准确度不如上方设置了权重高)
click('star.png') 直接点击图像
所有点击,移动函数皆可传入图像
文档
moveTo(x,y)将鼠标移动到指定的 x、y 坐标。
moveRel (xOffset,yOffset)相对于当前位置移动鼠标。
dragTo(x,y)按下左键移动鼠标。
dragRel (xOffset,yOffset)按下左键,相对于当前位置移动鼠标。
click(x,y,button)模拟点击(默认是左键)。
rightClick() 模拟右键点击。
middleClick() 模拟中键点击。
doubleClick() 模拟左键双击。
mouseDown(x,y,button)模拟在 x、y 处按下指定鼠标按键。
mouseUp(x,y,button)模拟在 x、y 处释放指定键。
scroll (units)模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。
typewrite(message)键入给定消息字符串中的字符。
typewrite([key1,key2,key3])键入给定键字符串。
press(key)按下并释放给定键。
keyDown(key)模拟按下给定键。
keyUp(key)模拟释放给定键。
hotkey([key1,key2,key3])模拟按顺序按下给定键字符串,然后以相反的顺序释放。
screenshot() 返回屏幕快照的 Image 对象
鼠标点击: click() 过程也可分解为mouseDown()、mouseUp();另有在click()之上封装的rightClick()、middleClick()、doubleClick()、tripleClick()等函数。
控制按键, press() 按键动作往细分解包含keyDown()和keyUp()两个过程;在此基础上封装,有typewrite()和hotkey()两个高阶一点的函数,分别用于输入字符串和按快捷键。
示例
鼠标实时绝对地址
import pyautogui
while True:
x, y = pyautogui.position() # 得到当前鼠标位置;输出:Point(x=200, y=800)
print(x, y)
图像位置识别
import pyautogui
num = 0.1
NUM = 1
for i in range(0, 9):
# 单个指定图像识别 (指定图像在屏幕上只有一个目标)
a, b, c, d = pyautogui.locateOnScreen('chrome.png', confidence=num)
# a, c = pyautogui.locateCenterOnScreen('tv.png') # # 获得文件图片在现在的屏幕上面的中心坐标
# x, y = pyautogui.center(pyautogui.locateOnScreen('tv.png', confidence=num)) # 获得文件图片在现在的屏幕上面的中心坐标
print("当前权重值:{}".format(num), "位置:{},{}".format(a, c))
num += 0.1
pyautogui.doubleClick(a, c)
# # 多个指定一致图像识别(指定图像在屏幕上有多个目标)
# btm = pyautogui.locateAllOnScreen('dz.png',confidence = 0.7)
# # print(list(btm))
# for i in list(btm):
# A, B, C, D = i
# # print("第{}个目标已找到---{}".format(NUM, i))
# print("第{}个目标已找到---位置({},{})".format(NUM, A, C))
# NUM += 1
# pyautogui.click(A, C, 2)
#
# print('\n\n')
# break
自动点赞
import pyautogui
import time
pyautogui.FAILSAFE = True
time.sleep(1)
def like(): # 主函数
time.sleep(0.1)
if pyautogui.locateOnScreen('dz.png'):
left, top, width, height = pyautogui.locateOnScreen('dz.png', confidence=0.7)
center = pyautogui.center((left, top, width, height))
pyautogui.click(center)
print('点赞成功!')
while True:
allLocation = pyautogui.locateAllOnScreen('dz.png')
if len(list(allLocation)) > 0: # 判断屏幕上目标个数是否存在
like() # 调用点赞函数
else: # 如果没目标则滚动屏幕
try:
pyautogui.scroll(-500)
print('我滚了!')
except:
print('完蛋啦')