PyAutoGUI使用
目录
- 1简介
- 2安装
- 3保护措施(Fail-Safes)
- 3.1中断程序
- 3.2为所有函数增加延迟
- 4鼠标操作
- 4.1获取鼠标当前位置
- 4.1.1示例
- 4.2移动鼠标
- 4.2.1绝对移动
- 4.2.2缓动/渐变(Tween / Easing)函数
- 4.2.3相对移动
- 4.3鼠标拖拽
- 4.3.1绝对拖移
- 4.3.2相对拖移
- 4.4鼠标点击
- 4.4.1单机鼠标
- 4.4.2双击鼠标
- 4.4.3鼠标三击
- 4.4.4单机鼠标右键
- 4.4.5单机鼠标中轴滚轮
- 4.5鼠标中轴滚动
- 4.5.1鼠标上下滚动(Linux)
- 4.5.2鼠标左右滚动(Linux)
- 4.1获取鼠标当前位置
- 5键盘操作
- 5.1模拟键盘输入信息
- 5.2模拟点击esc按键
- 5.3模拟按下按键
- 5.4模拟松按键
- 5.5模拟组合热键
- 6其他操作
- 6.1弹窗操作
- 6.2获取屏幕分辨率
- 6.3截屏操作
- 6.3.1截取整个屏幕
- 6.3.2查找图片位置并获取中间点
简介
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('\nExit.')
移动鼠标
绝对移动
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)