• PyAutoGUI使用


    简介

    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)
  • 相关阅读:
    nginx预防常见攻击
    nginx性能优化(针对于高并发量仅供参考,并不是方案)
    nginx平滑升级(1.14--1.15)
    LAMP动静分离安装(源码安装)
    洛谷-P1098 字符串的展开
    洛谷-P1086 花生采摘
    洛谷-P1042 乒乓球
    洛谷-P1031 均分纸牌
    洛谷-P1023 税收与补贴问题
    洛谷-P1125 笨小猴
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/13491463.html
Copyright © 2020-2023  润新知