PyAutoGUI — GUI 自动化工具,用于模拟键盘和鼠标事件
在日常工作中,很多重复性的操作可以通过自动化工具来完成,极大地提升效率。PyAutoGUI 是一个强大的 Python 库,它可以控制鼠标和键盘,模拟用户的交互行为,用于实现图形用户界面 (GUI) 自动化。
PyAutoGUI 简介
PyAutoGUI 是一个跨平台的 GUI 自动化工具,支持以下功能:
- 模拟鼠标移动、点击、拖拽等操作。
- 模拟键盘输入,包括按键和组合键。
- 屏幕截图和图像识别。
- 支持 Windows、macOS 和 Linux 系统。
安装 PyAutoGUI
使用 pip 安装 PyAutoGUI:
pip install pyautogui
检查安装是否成功:
python -c "import pyautogui; print(pyautogui.size())"
如果返回了当前屏幕的分辨率,说明安装成功。
基本功能
1. 获取屏幕大小
在执行鼠标移动或点击时,需要知道屏幕的分辨率:
import pyautogui
# 获取屏幕的宽度和高度
screen_width, screen_height = pyautogui.size()
print(f"屏幕分辨率: {screen_width}x{screen_height}")
2. 鼠标操作
(1) 获取鼠标位置
# 获取当前鼠标的坐标
x, y = pyautogui.position()
print(f"当前鼠标位置: ({x}, {y})")
(2) 移动鼠标
# 移动鼠标到屏幕中央
pyautogui.moveTo(960, 540, duration=1) # (x, y) 坐标, 移动时长
(3) 模拟鼠标点击
# 单击
pyautogui.click(960, 540) # (x, y) 坐标
# 双击
pyautogui.doubleClick()
# 右击
pyautogui.rightClick()
(4) 鼠标拖拽
# 从 (100, 100) 拖拽到 (400, 400)
pyautogui.moveTo(100, 100)
pyautogui.dragTo(400, 400, duration=1)
(5) 鼠标滚动
# 向上滚动
pyautogui.scroll(500)
# 向下滚动
pyautogui.scroll(-500)
3. 键盘操作
(1) 模拟输入文本
pyautogui.write("Hello, PyAutoGUI!", interval=0.1) # 每个字符间隔 0.1 秒
(2) 模拟按键
# 按下并释放一个键
pyautogui.press("enter")
# 模拟组合键
pyautogui.hotkey("ctrl", "s") # 模拟 Ctrl + S
(3) 模拟按住和释放
pyautogui.keyDown("shift") # 按住 Shift 键
pyautogui.press("a") # 输入 'A'
pyautogui.keyUp("shift") # 释放 Shift 键
4. 屏幕截图与图像识别
(1) 屏幕截图
# 截取整个屏幕
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png") # 保存截图
(2) 图像识别
通过图像识别找到屏幕上的目标位置:
# 在屏幕上查找名为 "button.png" 的图像
location = pyautogui.locateOnScreen("button.png")
if location:
print(f"图像位置: {location}")
pyautogui.click(location) # 点击目标位置
else:
print("未找到目标图像")
注意:图像识别依赖屏幕分辨率和图像匹配精度,可能需要调整。
高级功能
1. 自动化弹窗处理
# 模拟关闭弹窗
pyautogui.moveTo(1200, 10) # 假设弹窗关闭按钮位于 (1200, 10)
pyautogui.click()
2. 安全触发
为了防止脚本失控,可以通过以下方法启用安全退出:
pyautogui.FAILSAFE = True # 启用安全退出
当鼠标移动到屏幕左上角时,脚本会自动停止。
PyAutoGUI 的注意事项
-
屏幕分辨率一致性
图像识别和鼠标操作需要确保运行环境的屏幕分辨率与开发环境一致,否则可能出现偏差。 -
适当的延迟
在执行连续的操作时,建议加入适当的延迟,防止操作过快导致错误。pyautogui.PAUSE = 0.5 # 每次操作后暂停 0.5 秒
-
权限问题
在 macOS 和某些 Linux 系统中,需要授予 PyAutoGUI 控制鼠标和键盘的权限。
应用场景
-
自动化测试
模拟用户操作进行 GUI 测试,如点击按钮、输入表单等。 -
办公自动化
自动化处理重复性任务,例如批量导入数据、生成报告。 -
游戏辅助
模拟鼠标点击或键盘操作,实现简单的自动化游戏脚本。
示例项目:自动登录网站
以下示例演示如何使用 PyAutoGUI 自动登录一个网站:
import pyautogui
import time
# 打开浏览器
pyautogui.press("win") # 按下 Windows 键
pyautogui.write("chrome") # 输入浏览器名称
pyautogui.press("enter")
time.sleep(2)
# 输入网址
pyautogui.write("https://example.com/login")
pyautogui.press("enter")
time.sleep(3)
# 输入用户名和密码
pyautogui.click(600, 400) # 点击用户名输入框
pyautogui.write("your_username")
pyautogui.click(600, 500) # 点击密码输入框
pyautogui.write("your_password")
# 点击登录按钮
pyautogui.click(650, 600)
总结
PyAutoGUI 是一个功能丰富且易于使用的工具,非常适合实现 GUI 自动化任务。通过它,你可以快速模拟用户操作,完成一系列复杂的任务。如果你对 PyAutoGUI 感兴趣,不妨尝试将其应用到你的工作或项目中,相信它会成为你开发工具箱中不可或缺的一部分。