PyautoGui 自动化控制鼠标和键盘操作 常用函数整理

PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,多平台支持(Windows,OS X,Linux)。

一、安装

pip3 install pyautogui

二、前置函数

自动 防故障功能

# 默认这项功能为True, 这项功能意味着:当鼠标的指针在屏幕的最坐上方,程序会报错;目的是为了防止程序无法停止
pyautogui.FAILSAFE =False

停顿功能

# 意味着所有pyautogui的指令都要暂停一秒;其他指令不会停顿;这样做,可以防止键盘鼠标操作太快;
pyautogui.PAUSE = 1

三、鼠标操作示例

# 获取当前屏幕分辨率
screenWidth, screenHeight = pyautogui.size()

# 获取当前鼠标所在x,y坐标
mouseX, mouseY = pyautogui.position()
print(mouseX, mouseY)

# 鼠标的点击与释放
pyautogui.mouseDown()   # 鼠标按下
pyautogui.mouseUp()    # 鼠标释放

# 2秒钟鼠标移动到指定坐标位置, 绝对移动
pyautogui.moveTo(x=100, y=100, duration=2, tween=pyautogui.linear)

# 1秒鼠标移动到屏幕中央
pyautogui.moveTo(screenWidth / 2, screenHeight / 2, 1)

# 鼠标相对移动, 向下移动
pyautogui.moveRel(xOffset=-100, yOffset=100, duration=1.0, tween=pyautogui.linear)

# 鼠标右键点击一次
pyautogui.click(
    x=None,     # x坐标
    y=None,     # y坐标
    clicks=1,   # 点击次数
    interval=0.0,   # 多次点击间隔时间
    button='right',  # left, middle, right 对应鼠标左中右键,或取值(1,2,3)
    duration=0.5,   # 移动到指定坐标所花费的时间
    tween=pyautogui.linear  # 渐变函数
)

# 鼠标左键点击一次
pyautogui.click(
    x=1013,     # x坐标
    y=789,     # y坐标
    clicks=1,   # 点击次数
    interval=0.0,   # 多次点击间隔时间
    button='left',  # left, middle, right 对应鼠标左中右键,或取值(1,2,3)
    duration=0.5,   # 移动到指定坐标所花费的时间
    tween=pyautogui.linear  # 渐变函数
)

# 鼠标在当前位置0间隔双击
pyautogui.doubleClick(x=None, y=None, interval=0, button='left', duration=0, tween=pyautogui.linear)

# 鼠标在当前位置3击
pyautogui.tripleClick(x=None, y=None, interval=0, button='left', duration=0, tween=pyautogui.linear)

# 右击
pyautogui.rightClick()

# 中击
pyautogui.middleClick()

# 左击
pyautogui.leftClick()

# 鼠标控制拖动事件
pyautogui.moveTo(100,10,0.5)
# 向右拖动1000px, 向下500px, 这个过程持续1秒
pyautogui.dragTo(1000, 500, 1)

# 鼠标按当前位置的相对方向拖动
# 向右拖动100px, 向下500px, 这个过程持续1.5秒
pyautogui.dragRel(100, 200, 1.5)

# 鼠标控制滚轮 scrool(), 传入一个整数的参数, 说明向上或向下滚动多少个单位
# 这个单位根据操作系统不同而不同
pyautogui.scroll(500)

四、键盘操作示例

# 键盘事件
pyautogui.keyDown('shift')      # 按下shift
pyautogui.press('4')            # 按下4
pyautogui.keyUp('shift')        # 释放shift

# 缓慢输出
pyautogui.typewrite('# zheshi yitiao zhushi ', 0.1)
pyautogui.press('enter')
# 这是一条注释

# 键盘特殊顺序输出
pyautogui.typewrite(['T','i','s','left','left','h'])
# 输出>>>This

五、弹出层

# 提示信息
pyautogui.alert(text='测试弹窗提示', title='提示:')
# option 多按钮选择提示
res = pyautogui.confirm('请选择:', buttons=['A','B','C'])
print(res)

# 弹出密码输入框
pwd = pyautogui.password('请输入密码:')
print(pwd)

# 弹出输入框
txt = pyautogui.prompt('请输入信息:')
print(txt)

六、截屏与屏幕图片识别操作

截图:

# 返回屏幕的截图, 是一个pillow的image对象
# 需要安装 Pillow 库才能使用
img1 = pyautogui.screenshot()
img1.save('img1.png')   # 截图方式1
img2 = pyautogui.screenshot('img2.png')     # 截图方式2

屏幕图片识别匹配:
使用方法:使用截图工具截取一块屏幕上的元素,例如在桌面上新建文件夹,只截图文件夹图标和名字那一块
使用pyautogui内的识别方法,在桌面上与截图文件的元素进行识别匹配,匹配到之后返回坐标。

# 屏幕查找图片位置并获取中间点
coords = pyautogui.locateOnScreen('D:\\images\\newdir.png')
print(coords)
# 获取定位到的图 中间坐标
x, y = pyautogui.center(coords)
# 点击该坐标
pyautogui.leftClick(x, y)

# 鼠标左键双击,打开文件夹
pyautogui.doubleClick(button='left)

七、pyautogui支持模拟按键的字符

# 数字
'0','1','2','3','4','5','6','7','8','9'

# 小键盘数字
'num0','num1','num2','num3','num4','num5','num6','num7','num8','num9'

# 单字母
'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'

# 不可见字符
'\t','\n','\r',' '

# 可见特殊字符
'!','"','#','$','%','&',"'",'(',')',
'*','+',',','-','.','/',':',';','<','=','>','?','@',
'[','\\',']','^','_','`','{','|','}','~',

# 控制类按键
'ctrl','ctrlleft','ctrlright',
'shift','shiftleft','shiftright',
'alt','altleft','altright',
'win','winleft','winright',
'del','delete','insert',
'esc','escape',
'backspace','capslock','scrolllock','numlock',
'left','up','right','down','home','end',
'enter','return','space',
'pgup','pageup','pgdn','pagedown',
'printscreen','prntscrn','prtsc','prtscr',
'tab'

# 浏览器操作
'browserback','browserfavorites','browserforward','browserhome',
'browserrefresh','browsersearch','browserstop'

# Mac按键
'command','option','optionleft','optionright',

# 辅助按键
'fn',
'f1','f2','f3','f4','f5','f6','f7','f8','f9',
'f10','f11','f12','f13','f14','f15','f16','f17','f18','f19',
'f20','f21','f22','f23','f24'

# 不知道什么鬼的字符
'accept','add','apps','clear','convert','decimal',
'divide','execute',
'final','hanguel','hangul','hanja','help','junja',
'kana','kanji','launchapp1','launchapp2','launchmail',
'launchmediaselect','modechange','multiply','nexttrack',
'nonconvert','prevtrack','print','select','separator',
'sleep','stop','subtract','yen',
'volumedown','volumemute','volumeup','playpause','pause'

风影OvO

风影OvO, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA 4.0协议进行授权 | 转载请注明原文链接

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐