PyAutoGUI使用 简介 安装 保护措施(Fail-Safes) 鼠标操作 键盘操作 其他操作

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

安装

使用python的pip包管理工具安装:

#安装依赖
sudo pip3 install pillow
#安装pyautogui
sudo pip3 install pyautogui

保护措施(Fail-Safes)

中断程序

Python移动鼠标、点击键盘非常快,有可以导致其他应用出现问题。在这种情况下,程序可能会失控(即使是按照你的意思执行的),那时就需要中断。如果鼠标还在自动操作,就很难在程序窗口关闭它。 为了能够及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,如果把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常。如果失控了,需要中断PyAutoGUI函数,就把鼠标光标在屏幕左上角。

import pyautogui
pyautogui.FAILSAFE = False

为所有函数增加延迟

通过把pyautogui.PAUSE设置成float或int时间(秒),可以为所有的PyAutoGUI函数增加延迟。默认延迟时间是0.1秒。在函数循环执行的时候,这样做可以让PyAutoGUI运行的慢一点,非常有用。例如:

import pyautogui
pyautogui.PAUSE = 0.5

鼠标操作

获取鼠标当前位置

import pyautogui
pyautogui.position()

示例

import pyautogui
try:
    while True:
        x, y = pyautogui.position()
        print(x,y)
except KeyboardInterrupt:
    print('
Exit.')

移动鼠标

绝对移动

import pyautogui
pyautogui.moveTo(x=50, y=50, duration=2, tween=pyautogui.linear)
====参数说明====
x,y:为目标坐标,所有传入x,y坐标的地方,都可以用坐标x,y的元组或者列表替代
duration:指定鼠标移动到目标位置所需要的秒数,可以为int或float
tween:渐变函数,移动到目标位置的炫酷特效

缓动/渐变(Tween / Easing)函数

缓动/渐变函数的作用是让光标的移动更炫。如果你不需要用到的话,你可以忽略这些。 缓动/渐变函数可以改变光标移动过程的速度和方向。通常鼠标是匀速直线运动,这就是线性缓动/渐变函数。PyAutoGUI有30种缓动/渐变函数,可以通过dir(pyautogui)查看。其中,pyautogui.easeInQuad()函数可以用于moveTo(),moveRel(),dragTo()和dragRel()函数,光标移动呈现先慢后快的效果,整个过程的时间还是和原来一样。而pyautogui.easeOutQuad函数的效果相反:光标开始移动很快,然后慢慢减速。pyautogui.easeOutElastic是弹簧效果,首先越过终点,然后再反弹回来

#默认为匀速直线运动
pyautogui.moveTo(50, 50, 2, pyautogui.linear)
#  开始很慢,不断加速
pyautogui.moveTo(50, 50, 2, pyautogui.easeInQuad)
#  开始很快,不断减速
pyautogui.moveTo(50, 50, 2, pyautogui.easeOutQuad)
#  开始和结束都快,中间比较慢
pyautogui.moveTo(50, 50, 2, pyautogui.easeInOutQuad)
#  一步一徘徊前进
pyautogui.moveTo(50, 50, 2, pyautogui.easeInBounce)
#  徘徊幅度更大,甚至超过起点和终点
pyautogui.moveTo(50, 50, 2, pyautogui.easeInElastic)

相对移动

import pyautogui
pyautogui.moveRel(xOffset=50, yOffset=50, duration=2, tween=pyautogui.linear)

鼠标拖拽

绝对拖移

import pyautogui
pyautogui.dragTo(x=200, y=200, duration=2, button="left")

相对拖移

import pyautogui
pyautogui.dragRel(xOffset=200, yOffset=200, duration=2, button="left")

鼠标点击

单机鼠标

import pyautogui
pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0, tween=pyautogui.linear)

双击鼠标

import pyautogui
#pyautogui.doubleClick()
pyautogui.doubleClick(x=None, y=None, interval=0.0, button='left', duration=0.0, tween=pyautogui.linear)

鼠标三击

import pyautogui
#pyautogui.tripleClick()
pyautogui.tripleClick(x=None, y=None, interval=0.0, button='left', duration=0.0, tween=pyautogui.linear)

单机鼠标右键

import pyautogui
pyautogui.rightClick()

单机鼠标中轴滚轮

import pyautogui
pyautogui.middleClick()

鼠标中轴滚动

鼠标上下滚动(Linux)

import pyautogui
pyautogui.scroll()

鼠标左右滚动(Linux)

import pyautogui
pyautogui.hscroll()

键盘操作

模拟键盘输入信息

import pyautogui
pyautogui.typewrite(message='Hello world!',interval=0.5)

模拟点击esc按键

import pyautogui
pyautogui.press('esc')

模拟按下按键

import pyautogui
pyautogui.keyDown('ctrl')

模拟松按键

import pyautogui
pyautogui.keyUp('ctrl')

模拟组合热键

import pyautogui
pyautogui.hotkey('winleft', 'd')

其他操作

弹窗操作

如果你需要消息弹窗,通过单击OK暂停程序,或者向用户显示一些信息,消息弹窗函数就会有类似JavaScript的功能:

import pyautogui
pyautogui.alert('这个消息弹窗是文字+OK按钮')
pyautogui.confirm('这个消息弹窗是文字+OK+Cancel按钮')
pyautogui.prompt('这个消息弹窗是让用户输入字符串,单击OK')

获取屏幕分辨率

import pyautogui
screenWidth, screenHeight = pyautogui.size()

截屏操作

截取整个屏幕

import pyautogui
im1 = pyautogui.screenshot()
im1.save('my_screenshot.png')

查找图片位置并获取中间点

import pyautogui
# 在当前屏幕中查找指定图片(图片需要由系统截图功能截取的图)
coords = pyautogui.locateOnScreen('folder.png')
# 获取定位到的图中间点坐标
x,y=pyautogui.center(coords)