• 【python自动化神器pyautogui使用步骤】


    python自动化神器pyautogui使用步骤

    这篇文章主要给大家介绍了关于python自动化神器pyautogui使用步骤的相关资料,在Python当中不仅代码简单,而且有着非常丰富的模块,pyautogui就可以称之为自动化操作的"神器",需要的朋友可以参考下

    一、pyautogui是什么?

    pyautogui是一个Python模块,可以模拟用户在屏幕上的鼠标和键盘操作。它可以自动化鼠标和键盘输入,可以用于各种自动化任务,例如GUI测试、自动化数据输入、自动化游戏玩法等。pyautogui提供了一组函数来控制鼠标和键盘,例如移动鼠标、单击、双击、右键单击、按下和释放键等。它还提供了一些额外的功能,例如捕捉屏幕截图、识别颜色和图像等,以及其他一些实用工具,例如获取屏幕尺寸和鼠标位置。

    二、使用步骤

    1.安装和引入库

    pip install pyautogui
    import pyautogui
    
    • 1
    • 2

    2.基本操作

    (1)鼠标控制
    PyAutoGUI可以模拟鼠标的点击和移动。以下是一些基本操作:
    	    moveTo(x, y):将鼠标移动到屏幕上的指定位置。
    	    click(x=None, y=None, button='left'):在指定位置单击鼠标左键、右键或中键。
    	    doubleClick(x=None, y=None, button='left'):在指定位置双击鼠标左键、右键或中键。
    	    rightClick(x=None, y=None):在指定位置单击鼠标右键。
    	    middleClick(x=None, y=None):在指定位置单击鼠标中键。
    	    dragTo(x, y, duration=0.5):将鼠标拖动到指定位置。'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    实例:

    import pyautogui
    # 将鼠标移动到屏幕中央
    pyautogui.moveTo(pyautogui.size()[0]/2, pyautogui.size()[1]/2)
    # 在屏幕中央单击鼠标左键
    pyautogui.click()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    (2)键盘控制

    PyAutoGUI还可以模拟键盘的输入。以下是一些基本操作:

    typewrite(message, interval=0.1):将字符串输入到键盘,可以设置键入每个字符的时间间隔。
    press(key):按下指定的键。
    release(key):释放指定的键。
    hotekey('ctrl',key)::按下组合键
    
    • 1
    • 2
    • 3
    • 4

    以下是一个例子,演示如何将“Hello, world!”字符串键入到计算机上:

    import pyautogui
    
    # 将“Hello, world!”字符串键入计算机
    pyautogui.typewrite('Hello, world!')
    # 模拟按下键盘的A键
    pyautogui.press('a')
    
    # 模拟释放键盘的A键
    pyautogui.release('a')
    
    #组合键
    pyautogui.hotkey('ctrl','v')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    (3)屏幕截图

    PyAutoGUI可以截取屏幕上的图像。以下是一个基本操作:

    screenshot():截取屏幕上的图像,并返回PIL图像对象。
    
    • 1

    以下是一个例子,演示如何截取整个屏幕的图像:

    import pyautogui
    
    # 截取整个屏幕
    screenshot = pyautogui.screenshot()
    
    # 显示截图
    screenshot.show()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    也可以截取指定位置尺寸的图片

    imag=pyautogui.screenshot(region=(0, 0, 300, 400))#(x,y,w,e)4个点的位置
    imag.save('1.png')#保存位置
    
    • 1
    • 2
    (4)图片位置识别

    PyAutoGUI可以识别图片所在的位置

    img_path='location.png'
    location=pyautogui.locateOnScreen(img_path)
    print(location)
    
    • 1
    • 2
    • 3

    但是很多时候图片识别不到,返回None,这个时候就要对识别参数进行设置
    confidence 是一个可选参数,表示搜索图像时所需的置信度或准确度。它是一个介于0到1之间的浮点数,表示函数在搜索图像时所需的匹配准确度。值越高,匹配准确度就越高,但搜索速度可能会变慢。值越低,则匹配准确度可能会降低,但搜索速度会更快。

    例如,当设置confidence为0.5时,函数将会搜索与给定图像相匹配的区域,并且只有当置信度大于等于0.5时,函数才会返回该区域的位置。因此,confidence的值可以影响函数的性能和准确性,取决于您所需要的搜索结果的精度和速度。

    pyautogui.locateOnScreen(confidence``=``0.5``)
    
    • 1
    (5) 获取鼠标位置
    import pyautogui
    # 获取鼠标的当前位置
    x, y = pyautogui.position()
    print(f"鼠标当前位置:{x}, {y}")
    
    • 1
    • 2
    • 3
    • 4

    也可以获取图片上鼠标的位置

    import pyautogui
    import time
    def get_mouse_postion():
        time.sleep(5)
        print('开始获取鼠标位置')
        time.sleep(1)
        x, y = pyautogui.position()
        postion = '鼠标坐标带你({},{})'.format(str(x).rjust(4), str(y).rjust(4))
        pix = pyautogui.screenshot().getpixel((x, y))  # 获取鼠标所在屏幕点的RGB颜色
        postion += 'RGB:(' + str(pix[0]).rjust(3) + ',' + str(pix[1]).rjust(3) + ',' + str(pix[2]).rjust(3) + ')'
        print(postion)
        pyautogui.click(x, y)
        print(x,y)
        with open('坐标.csv','a',encoding='utf-8')as f:
            f.write(str(x))
            f.write(',')
            f.write(str(y))
            f.write('\n')
        print('结束')
    get_mouse_postion()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    (6)其他

    保护措施:

    python移动鼠标、点击键盘非常快,可能会造成其他可能问题,为了及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常,中断程序。如果想禁用这个特性,把FAILSAFE设置成False:

    import pyautogui
    pyautogui.FAILSAFE = False
    
    • 1
    • 2

    时间延迟
    pyautogui.PAUSE 设置延迟,提供页面反映时间,避免页面还没架加载好久执行

    import pyautogui
    pyautogui.PAUSE = 2.5
    
    • 1
    • 2

    一、模块需要

    • pyautogui
    • pyperclip
    pip install pyautogui
    pip install pyperclip
    
    • 1
    • 2

    pyautogu上篇文章已经详细说明了,但是由于输入格式问题,只能输入英文,所以pyperclip 将文本内容复制到粘贴板,然后用pyautogu进行键盘粘贴操作

    txt='I love you'
    pyperclip.copy(txt)
    pyautogui.hotkey('ctrl','v')
    
    • 1
    • 2
    • 3

    三、自动发消息给对象

    1.截图操作

    分别截取微信PC的图像,以及微信聊天框中的搜索框图片,如下

    在这里插入图片描述

    在这里插入图片描述

    尽量截图小点,分别保存成1.png,2.png

    2.python代码

    设置配置

    pyautogui.PAUSE=1#每次延迟1秒
    pyautogui.FAILSAFE=True
    wechat_id='jiejieluoguo'#你对象的微信账号
    
    • 1
    • 2
    • 3

    返回主界面

    pyautogui.hotkey('win', 'm')
    
    • 1

    获取微信图标位置并点击

    #获取微信图标位置,并点击
    location1=pyautogui.locateOnScreen('1.png', confidence=0.7)
    print(location1)
    pyautogui.doubleClick(location1)
    
    • 1
    • 2
    • 3
    • 4

    获取搜索框位置,单击输入账号,回车,到聊天界面

    location2=pyautogui.locateOnScreen('2.png', confidence=0.7)
    print(location2)
    pyautogui.doubleClick(pyautogui.center(location1))
    pyautogui.typewrite(wechat_id)#写入微信账号
    pyautogui.press('enter')#回车
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建一个名为语料的文本,存入你想说的话(可以上网搜一搜相关语录)

    在这里插入图片描述

    读取语录中的内容

    with open('语录','r',encoding='utf-8')as f:
        lists=f.readlines()
    
    • 1
    • 2

    然后循环粘贴回车发送

    for i in lists:
        i=i.strip()
        pyperclip.copy(i)#复制到剪切板
        pyautogui.hotkey('ctrl','v')#粘贴到输入框,回车
        pyautogui.press('enter')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    完整代码``

    import pyautogui
    import pyperclip
    
    pyautogui.PAUSE=1#每次延迟1秒
    
    pyautogui.FAILSAFE=True
    
    wechat_id='jiejieluoguo'#你女朋友微信账号
    
    pyautogui.hotkey('win', 'm')
    
    #获取微信图标位置,并点击
    location1=pyautogui.locateOnScreen('1.png', confidence=0.7)
    print(location1)
    pyautogui.doubleClick(location1)
    
    location2=pyautogui.locateOnScreen('2.png', confidence=0.7)
    print(location2)
    pyautogui.doubleClick(location2)
    pyautogui.typewrite(wechat_id)#写入微信账号
    pyautogui.press('enter')#回车
    
    with open('语录','r',encoding='utf-8')as f:
        lists=f.readlines()
    
    for i in lists:
        i=i.strip()
        pyperclip.copy(i)#复制到剪切板
        pyautogui.hotkey('ctrl','v')#粘贴到输入框,回车
        pyautogui.press('enter')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    总结

    需要更多了解关于pyautogui知识,可以访问官址https://pyautogui.readthedocs.io/en/latest/

  • 相关阅读:
    OBIA:900+ 患者、193w+ 影像,中科院基因组所发布我国首个生物影像共享数据库
    Android studio2022.3项目,禁止页面左右
    Linux学习笔记之设备驱动篇(2)_内核模块_理论篇
    【VUE3】setup语法糖使用记录
    SpringBoot整合Redis、StringRedisTemplate读写redis客户端
    Spring Boot Logback启动流程
    Cadence OrCAD Capture 在Excel中编辑所有元件属性然后导入设计图纸的方法
    Nodejs -- Express中间件的概念及基本使用
    React 高级教程
    通讯协议学习之路:IIC协议理论
  • 原文地址:https://blog.csdn.net/No_Name_Cao_Ni_Mei/article/details/133795386