Python 自动化神器:用 pyautogui 实现鼠标和键盘自动化操作

1,095 阅读4分钟

在日常开发和测试中,我们经常需要模拟用户的鼠标和键盘操作,比如自动填写表单、批量点击、自动化测试等。Python 中有一个非常强大的第三方库——pyautogui,它可以帮助我们轻松实现这些自动化任务,适用于 Windows、Mac 和 Linux 系统。

本文将带你从基础入门到实战操作,全面掌握 pyautogui 的使用方法,并通过多个示例帮助你快速上手。

一、安装 pyautogui

在使用之前,首先需要安装 pyautogui 库:

pip install --user pyautogui

安装完成后,就可以在 Python 脚本中导入并使用它了。

二、屏幕与鼠标的基本操作

1. 获取屏幕尺寸

import pyautogui

screen_width, screen_height = pyautogui.size()
print(f"屏幕尺寸: {screen_width}x{screen_height}")

输出示例:

屏幕尺寸: 1920x1080

2. 获取当前鼠标位置

x, y = pyautogui.position()
print(f"当前鼠标位置: ({x}, {y})")

输出示例:

当前鼠标位置: (960, 540)

3. 移动鼠标到指定位置

pyautogui.moveTo(100, 200, duration=1)  # 1秒内移动到 (100, 200)

⚠️ 注意:坐标范围不能超出屏幕分辨率,否则会抛出异常。默认启用了安全机制(FAILSAFE),如果你希望禁用它(不推荐):

pyautogui.FAILSAFE = False

4. 相对当前位置移动鼠标

pyautogui.moveRel(50, -30, duration=0.5)  # 向右移动50像素,向上移动30像素

三、实战演示:鼠标移动 + 回归原位

下面是一个完整的示例,演示如何将鼠标移动到屏幕中心、再相对移动,最后返回原位置:

import pyautogui
import time

# 获取屏幕尺寸
screen_width, screen_height = pyautogui.size()

# 获取当前鼠标位置
x, y = pyautogui.position()
print(f"初始位置: ({x}, {y})")

# 移动到屏幕中心
pyautogui.moveTo(screen_width / 2, screen_height / 2, duration=1)
print("移动到屏幕中心")

time.sleep(2)  # 等待 2 秒

# 向右移动 200 像素,向下移动 100 像素
pyautogui.moveRel(200, 100, duration=0.5)
print("相对移动后的位置")

# 移动回初始位置
pyautogui.moveTo(x, y, duration=1)
print("返回初始位置")

这段代码非常适合用于自动化测试、演示操作流程等场景。

四、键盘操作

除了鼠标操作,pyautogui 还支持模拟键盘输入。

1. 输入文本

pyautogui.typewrite("Hello, World!", interval=0.1)  # 每个字符间隔0.1秒

2. 模拟按键按下与释放

pyautogui.press('enter')     # 按下回车键
pyautogui.hotkey('ctrl', 'c')  # 模拟 Ctrl+C 快捷键
pyautogui.hotkey('ctrl', 'v')  # 模拟 Ctrl+V 快捷键

3. 示例:自动打开记事本并输入内容(Windows)

pyautogui.hotkey('win', 'r')        # 打开运行窗口
pyautogui.typewrite('notepad', interval=0.1)  # 输入 notepad
pyautogui.press('enter')            # 按下回车
time.sleep(1)                       # 等待记事本打开
pyautogui.typewrite("自动化测试内容", interval=0.2)

这个例子展示了如何通过 pyautogui 控制系统级操作,非常适合用于自动化脚本编写。

五、图像识别与点击

pyautogui 还支持基于图像识别的自动化操作,这对于自动化点击特定按钮、图标非常有用。

1. 查找图像在屏幕中的位置

button_location = pyautogui.locateOnScreen('button.png')  # 图像文件路径
if button_location:
    print("找到按钮位置:", button_location)
    center = pyautogui.center(button_location)
    pyautogui.click(center)
else:
    print("未找到按钮")

📌 注意:图像识别对分辨率和颜色非常敏感,建议使用截图工具截取精确的按钮图片,并保持屏幕状态一致

六、异常处理与安全机制

为了防止脚本失控,pyautogui 默认启用了安全机制:当鼠标移动到屏幕左上角 (0, 0) 时,会触发 FailSafeException 异常,从而中断程序。

你可以通过以下方式捕获异常:

try:
    pyautogui.moveTo(0, 0, duration=1)
except pyautogui.FailSafeException:
    print("触发安全机制,程序已中断")

七、应用场景推荐

  1. 自动化测试:模拟用户点击、输入等操作,验证软件功能。
  2. 数据采集:自动打开网页、点击按钮、填写表单。
  3. 游戏挂机脚本:模拟重复操作,实现自动打怪、采集等。
  4. 办公自动化:自动填写表格、复制粘贴、批量处理文件。
  5. 演示脚本:在教学或会议中,自动演示操作流程。

八、总结

pyautogui 是一个功能强大且简单易用的自动化操作库,适合初学者和进阶开发者使用。通过本文的讲解和示例代码,你可以轻松掌握其基本操作,并结合实际需求开发出各种自动化脚本。