【python脚本】基于pyautogui的python脚本

发布于:2025-04-05 ⋅ 阅读:(25) ⋅ 点赞:(0)

一、什么是自动化

自动化是指使用技术手段模拟人工,执行重复性任务。准确率100%,高于人工。

自动化应用场景:

  • 自动化测试
  • 自动化运维
  • 自动化办公
  • 自动化游戏

二、pyautogui的使用

先使用 pip install pyautogui 指令安装这个第三方库

2.1 鼠标事件

2.1.1 鼠标移动,鼠标移动时间

import pyautogui as pa

# 鼠标移动 x y
pa.moveTo(100, 100)

# 鼠标移动时间
pa.moveTo(100, 100, 1)

pyautogui.moveTo()函数

参数原型

pyautogui.moveTo(x, y, duration=0.0, _pause=True)

参数解释

  • x:目标位置的水平坐标(像素),是必需参数。坐标原点为屏幕左上角,向右为正方向。
  • y:目标位置的垂直坐标(像素),是必需参数。坐标原点为屏幕左上角,向下为正方向。
  • duration:可选参数,指定鼠标移动到目标位置所花费的时间(秒),默认值为 0.0,即瞬间移动到目标位置。你可以通过设置该参数,让鼠标以更自然的速度移动。
  • _pause:可选参数,是一个布尔值,默认值为 True。如果设置为 True,在函数执行完成后会暂停一段时间,该暂停时间由 pyautogui.PAUSE 属性决定;如果设置为 False,则不会暂停。

2.1.2 鼠标偏移,鼠标偏移时间

import pyautogui as pa

# 鼠标偏移
pa.move(100, 100)

# 鼠标偏移时间
pa.move(100, 100, 1)

pyautogui.move()函数

函数原型

pyautogui.move(xOffset, yOffset, duration=0.0, _pause=True)

参数解释

  • xOffset:必需参数,指定鼠标在水平方向上移动的像素数。正值表示向右移动,负值表示向左移动。
  • yOffset:必需参数,指定鼠标在垂直方向上移动的像素数。正值表示向下移动,负值表示向上移动。
  • duration:可选参数,指定鼠标完成移动所花费的时间(秒),默认值是 0.0,意味着瞬间移动。你可以设置这个参数,让鼠标以更自然的速度移动。
  • _pause:可选参数,是一个布尔值,默认值为 True。若设置为 True,函数执行完毕后会暂停一段时间,暂停时长由 pyautogui.PAUSE 属性决定;若设置为 False,则不会暂停。

2.1.3 获取鼠标位置,屏幕分辨率

import pyautogui as pa

# 获取屏幕分辨率
x, y = pa.size()
print(x, y)

# 获取当前鼠标的位置
x, y = pa.position()
print(x, y)

pyautogui.size()函数

函数原型

pyautogui.size()

返回值

       该函数返回一个包含两个整数的元组 (width, height),其中 width 是屏幕的宽度,height 是屏幕的高度。

pyautogui.position()函数

函数原型

pyautogui.position()

返回值

       该函数返回一个包含两个整数的元组 (x, y),其中 x 是鼠标指针的水平坐标,y 是鼠标指针的垂直坐标。坐标原点为屏幕的左上角,水平向右为 x 轴正方向,垂直向下为 y 轴正方向。

2.1.4 实时获取鼠标当前位置

import pyautogui as pa

x, y = pa.position()

while True:
    x1, y1 = pa.position()
    if x != x1 or y != y1:
        x, y = x1, y1
        print(x, y)

2.1.5 鼠标点击,鼠标点击次数

import pyautogui as pa

pa.click(441, 123)

pyautogui.click()函数

函数原型

pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0, _pause=True)

参数解释

  • xy:可选参数,指定鼠标点击的屏幕坐标位置。如果不提供这两个参数,默认在鼠标当前位置进行点击。
  • clicks:可选参数,指定点击的次数,默认值为 1,即单击操作。
  • interval:可选参数,指定每次点击之间的间隔时间(秒),默认值为 0.0
  • button:可选参数,指定使用哪个鼠标按键进行点击,取值可以是 'left'(左键,默认值)、'middle'(中键)或 'right'(右键)。
  • duration:可选参数,指定鼠标移动到点击位置所花费的时间(秒),默认值为 0.0,即瞬间移动到目标位置。
  • _pause:可选参数,是一个布尔值,默认值为 True。如果设置为 True,在函数执行完成后会暂停一段时间,该暂停时间由 pyautogui.PAUSE 属性决定;如果设置为 False,则不会暂停。

2.1.6 鼠标按住,抬起

# 鼠标按住 button=右键right,中键middle
pa.mouseDown()

# 鼠标抬起
pa.mouseUp()

pyautogui.mouseDown()函数

函数原型

pyautogui.mouseDown(x=None, y=None, button='left', _pause=True)

参数解释

  • xy:可选参数,指定鼠标按下的屏幕坐标位置。如果不提供这两个参数,默认在鼠标当前位置按下按键。
  • button:可选参数,指定按下的鼠标按键,取值可以是 'left'(左键,默认值)、'middle'(中键)或 'right'(右键)。
  • _pause:可选参数,是一个布尔值,默认值为 True。如果设置为 True,在函数执行完成后会暂停一段时间,该暂停时间由 pyautogui.PAUSE 属性决定;如果设置为 False,则不会暂停。

pyautogui.mouseUp()函数

函数原型

pyautogui.mouseUp(x=None, y=None, button='left', _pause=True)

参数解释

  • xy:可选参数,指定鼠标释放的屏幕坐标位置。如果不提供这两个参数,默认在鼠标当前位置释放按键。
  • button:可选参数,指定释放的鼠标按键,取值可以是 'left'(左键,默认值)、'middle'(中键)或 'right'(右键)。
  • _pause:可选参数,是一个布尔值,默认值为 True。如果设置为 True,在函数执行完成后会暂停一段时间,该暂停时间由 pyautogui.PAUSE 属性决定;如果设置为 False,则不会暂停。

2.1.7 鼠标滑轮滚动

# 鼠标滑动
# 正数往上滑动 负数往下滑动
pa.scroll(-3000)

pyautogui.scroll()函数

函数原型

pyautogui.scroll(clicks, x=None, y=None, _pause=True)

参数解释

  • clicks:这是一个必需参数,用于指定滚动的 “步数” 或 “刻度”。正数表示向上滚动,负数表示向下滚动。滚动幅度大小可能因操作系统和应用程序而异。
  • xy:可选参数,指定滚动操作发生的屏幕坐标位置。若不提供,默认在鼠标当前位置进行滚动。
  • _pause:可选参数,为布尔值,默认值是 True。若设置为 True,函数执行完成后会暂停一段时间,暂停时长由 pyautogui.PAUSE 属性决定;若设置为 False,则不会暂停。

2.2 键盘事件

2.2.1 键盘输入,间隔时间

# 键盘输入  不支持中文
pa.write('qwrewrsfdfs')

pyautogui.write()函数

函数原型

pyautogui.write(message, interval=0.0, _pause=True)

参数解释

  • message:必需参数,代表要输入的文本内容,可以是字符串。
  • interval:可选参数,指定每个字符输入之间的间隔时间(秒),默认值为 0.0,即尽可能快地输入。你可以通过设置该参数来控制输入速度,使输入看起来更自然。
  • _pause:可选参数,是一个布尔值,默认值为 True。如果设置为 True,在函数执行完成后会暂停一段时间,该暂停时间由 pyautogui.PAUSE 属性决定;如果设置为 False,则不会暂停。

2.2.2 按键输入,次数,间隔

# 按键输入
pa.press('enter')

pyatuogui.press()函数

函数原型

pyautogui.press(keys, presses=1, interval=0.0, _pause=True)

参数解释

  • keys:必需参数,可以是单个按键名称的字符串,也可以是包含多个按键名称的列表。按键名称可以是字母(如 'a''b')、数字(如 '1''2')、特殊字符(如 'space' 表示空格、'enter' 表示回车键)等。完整的按键名称列表可以参考 pyautogui 文档。
  • presses:可选参数,指定按键的按下次数,默认值为 1
  • interval:可选参数,指定每次按键之间的间隔时间(秒),默认值为 0.0
  • _pause:可选参数,是一个布尔值,默认值为 True。如果设置为 True,在函数执行完成后会暂停一段时间,该暂停时间由 pyautogui.PAUSE 属性决定;如果设置为 False,则不会暂停。

2.2.3 组合按键

# 组合按键
pa.hotkey('ctrl', 'v')

pyautogui.hotkey()函数

函数原型

pyautogui.hotkey(*keys, interval=0.0, _pause=True)

参数解释

  • *keys:这是一个可变参数,要求传入多个字符串,每个字符串代表一个按键。函数会按顺序依次按下这些按键,最后再按相反顺序释放这些按键,以此模拟组合键操作。比如,要模拟Ctrl+S,就传入'ctrl''s'
  • interval:可选参数,用于指定按下每个按键之间的间隔时间(秒),默认值是0.0
  • _pause:可选参数,是一个布尔值,默认值为True。若设置为True,函数执行完毕后会暂停一段时间,暂停时长由pyautogui.PAUSE属性决定;若设置为False,则不会暂停。

2.2.4 更便捷的输出中文

# 更便捷的输出中文
# 导包:import pyperclip

import pyautogui as pa
import time
import pyperclip

pa.click(110, 100)
pa.sleep(2)
a1 = '打发程序员'
pyperclip.copy(a1)
pa.hotkey('ctrl', 'v')

2.2.5 按键按住,抬起

# 按键的按住、抬起
pa.keyDown('shift')
pa.keyUp('shift')

pyautogui.keyDown()函数

函数原型

pyautogui.keyDown(key, _pause=True)

参数解释

  • key:必需参数,为字符串类型,表示要按下的按键名称。例如,要按下字母 a,则传入 'a';若要按下回车键,传入 'enter' 。常见的按键名称包括字母、数字、特殊字符(如 'space' 代表空格)以及功能键(如 'ctrl''alt''shift')等。你可以查阅 pyautogui 官方文档获取完整的按键名称列表。
  • _pause:可选参数,布尔值,默认值为 True。若设置为 True,函数执行完毕后会暂停一段时间,暂停时长由 pyautogui.PAUSE 属性决定;若设置为 False,则不会暂停。

pyautogui.keyUp()函数

函数原型

pyautogui.keyUp(key, _pause=True)

参数解释

  • key:这是必需参数,是一个字符串类型,代表要释放的按键名称。按键名称可以是字母(如 'a''b')、数字(如 '1''2')、特殊字符(如 'space' 表示空格、'enter' 表示回车键),还有功能键(如 'ctrl''alt''shift')等。完整的按键名称列表可查阅 pyautogui 官方文档。
  • _pause:属于可选参数,是布尔值,默认值为 True。若设置为 True,函数执行完成后会暂停一段时间,暂停时长由 pyautogui.PAUSE 属性决定;若设置为 False,则不会暂停。

2.3 截取屏幕图像

# 截取屏幕图像
# 安装依赖第三方库 Pillow

import pyautogui as pa

# 截取屏幕图像
# 第一个参数传 保存的位置

pa.screenshot('1.png')

pyautogui.screenshot()函数

函数原型

pyautogui.screenshot(region=None, imageFilename=None)

参数解释

  • region:可选参数,是一个包含四个整数的元组 (left, top, width, height)left 和 top 分别表示截图区域左上角的坐标,width 和 height 分别表示截图区域的宽度和高度。若不指定该参数,默认截取整个屏幕。
  • imageFilename:可选参数,是一个字符串,代表保存截图的文件名。若指定了该参数,截图会保存到指定文件;若不指定,函数会返回一个 PIL(Python Imaging Library)的 Image 对象。

2.4 消息框,输入框

# 消息框,输入框

import pyautogui as pa
import time

# 消息框
# 第一个位置传内容,第二个内容传标题,第三个内容传按钮
pa.alert('程序员', '镖旗')

# 输入框
# 第一个位置传内容,第二个内容传标题,第三个内容传默认输入的内容
a1 = pa.prompt('显示内容', '标题')
print(a1)

pyautogui.alert()函数

函数原型

pyautogui.alert(text='', title='', button='OK')

参数解释

  • text:这是可选参数,是一个字符串,代表消息框里要显示的文本内容,默认值为空字符串。
  • title:同样是可选参数,也是字符串,为消息框的标题,默认值为空字符串。
  • button:还是可选参数,是字符串,指定消息框上按钮的文本,默认值是 'OK'

pyautogui.prompt()函数

函数原型

pyautogui.prompt(text='', title='', default='')

参数解释

  • text:可选参数,是一个字符串,用于指定输入框中显示的提示文本,告知用户需要输入的内容,默认值为空字符串。
  • title:可选参数,也是字符串,为输入框的标题,默认值为空字符串。
  • default:可选参数,字符串类型,指定输入框中的默认文本内容,用户可以在此基础上进行修改或直接使用,默认值为空字符串。

三、基于opencv和pyautogui实现图像识别的自动操作

import time

import cv2
import pyautogui

def get_xy(img_model_path):
    """
    用来判断游戏画面的点击坐标
    :param img_model_path:用来检测的模版图片的路径
    :return:
    """
    # 将屏幕截图保存
    pyautogui.screenshot().save("./pic/screenshot.png")
    # 载入截图
    img = cv2.imread("./pic/screenshot.png")
    # 读取模版的宽度和高度
    height, width = img_model_path.shape
    # 进行模版匹配
    result = cv2.matchTemplate(img, img_model_path, cv2.TM_SQDIFF_NORMED)
    # 解析出匹配区域的左上角的坐标
    upper_left = cv2.minMaxLoc(result)[2]
    # 计算匹配区域右下角的坐标
    lower_right = (upper_left[0] + width, upper_left[1] + height)
    # 计算中心区域的坐标
    avg = (int((upper_left[0] + lower_right[0]) / 2), int((upper_left[1] + lower_right[1]) / 2))
    return avg

    def auto_click(var_avg):
        """
        接受一个元祖参数,自动点击
        :param var_avg:
        :return:
        """
        pyautogui.click(var_avg[0], var_avg[1], button='left')
        time.sleep(1)

    def routine(img_model_path, name):
        avg = get_xy(img_model_path)
        print(f'正在点击{name}')
        auto_click(avg)


网站公告

今日签到

点亮在社区的每一天
去签到