在日常开发和测试中,我们经常需要模拟用户的鼠标和键盘操作,比如自动填写表单、批量点击、自动化测试等。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("触发安全机制,程序已中断")
七、应用场景推荐
- 自动化测试:模拟用户点击、输入等操作,验证软件功能。
- 数据采集:自动打开网页、点击按钮、填写表单。
- 游戏挂机脚本:模拟重复操作,实现自动打怪、采集等。
- 办公自动化:自动填写表格、复制粘贴、批量处理文件。
- 演示脚本:在教学或会议中,自动演示操作流程。
八、总结
pyautogui 是一个功能强大且简单易用的自动化操作库,适合初学者和进阶开发者使用。通过本文的讲解和示例代码,你可以轻松掌握其基本操作,并结合实际需求开发出各种自动化脚本。