pyautogui 介绍
目录
1、简介
pyautogui 是 Python 跨平台键鼠自动化库,模拟真实的鼠标、键盘硬件行为,不识别系统控件,基于屏幕像素工作。
- 支持 Windows /macOS/ Linux
- 适合:游戏、无控件的客户端、图像识别点击
- 缺点:窗口最小化 / 被遮挡就失效;DPI 缩放容易坐标漂移;界面布局一变脚本容易崩
- 安全机制:鼠标快速挪到屏幕左上角会抛异常终止脚本,防止脚本失控
安装
pip install pyautogui pillow opencv-python
opencv-python用于识图的confidence(相似度)参数。
基础初始化
import pyautogui
import time
# 每一步操作默认等待0.5秒
pyautogui.PAUSE = 0.5
# 开启故障保护
pyautogui.FAILSAFE = True
2、鼠标相关
2.1 获取屏幕大小、鼠标当前坐标
# 屏幕宽高
screen_w, screen_h = pyautogui.size()
print(f"屏幕:宽{screen_w}, 高{screen_h}")
# 获取鼠标当前位置
x, y = pyautogui.position()
print(f"鼠标位置 x={x}, y={y}")
2.2 鼠标移动
# moveTo:绝对坐标移动,duration移动耗时(秒)
pyautogui.moveTo(400, 300, duration=0.6)
# move:相对当前位置偏移,x+50,y+20
pyautogui.move(50, 20, duration=0.3)
2.3 点击、右键、双击、滚轮
# 左键点击指定坐标
pyautogui.click(x=400, y=300)
# 右键
pyautogui.rightClick(x=400, y=300)
# 双击
pyautogui.doubleClick(x=400, y=300)
# 滚轮,正数向上,负数向下
pyautogui.scroll(-8)
2.4 拖拽
# 从当前位置拖拽到目标坐标
pyautogui.dragTo(700, 400, duration=1)
3、键盘操作
3.1 输入文本
# 直接输入字符串,光标需要已经在输入框内
pyautogui.typewrite("hello 测试123")
# 每个字符间隔0.1秒输入
pyautogui.typewrite("abc123", interval=0.1)
3.2 单按键、组合快捷键
# 单个按键
pyautogui.press("enter")
pyautogui.press("tab")
pyautogui.press("backspace")
pyautogui.press("delete")
# hotkey 组合键
pyautogui.hotkey("ctrl", "a") # 全选
pyautogui.hotkey("ctrl", "c") # 复制
pyautogui.hotkey("ctrl", "v") # 粘贴
常用按键名:
enter、tab、escape、home、end、up/down/left/right、ctrl、shift、alt、win
4、图 + 图像识别点击(高频)
# 全屏截图,PIL对象
img = pyautogui.screenshot()
img.save("full_screen.png")
# locateCenterOnScreen:找到模板图片中心点,找不到返回None
# confidence 相似度0~1,越高越严格,0.7‑0.9常用
pos = pyautogui.locateCenterOnScreen("btn.png", confidence=0.8)
if pos:
print(f"识别到按钮:{pos}")
pyautogui.click(pos)
else:
print("未找到图片")
# region=(左上角x,y,宽度,高度) 限定搜索区域,提升速度
pos2 = pyautogui.locateCenterOnScreen("btn.png", confidence=0.8, region=(200,100,900,700))
4.1 封装工具函数:等待图片出现再点击(实际脚本必用)
def click_by_image(img_path, timeout=5, confidence=0.8):
start = time.time()
while time.time() - start < timeout:
point = pyautogui.locateCenterOnScreen(img_path, confidence=confidence)
if point:
pyautogui.click(point)
return True
time.sleep(0.3)
return False
# 调用
# click_by_image("btn.png", timeout=8)
5、像素颜色判断
# 获取坐标点RGB
r, g, b = pyautogui.pixel(300, 300)
print(r,g,b)
# 判断某个点是否为指定颜色
if pyautogui.pixelMatchesColor(300, 300, (255,255,255)):
print("该点是白色")
6、完整小流程 Demo
import pyautogui
import time
pyautogui.PAUSE = 0.4
# 移动鼠标点击
pyautogui.moveTo(500, 400, duration=0.5)
pyautogui.click()
# 输入文字
pyautogui.typewrite("pyautogui 测试脚本")
pyautogui.press("enter")
# 全选删除
pyautogui.hotkey("ctrl", "a")
time.sleep(0.2)
pyautogui.press("delete")
7、重要踩坑总结
1. Windows 系统显示缩放 125%/150%,会出现坐标偏移问题。
2. 窗口最小化、被遮挡,识图和鼠标点击全部失效。
3. 识图用 PNG 模板,不要用 JPG,压缩会导致像素不匹配识别失败。
4. 只适合兜底场景;Windows 标准桌面自动化优先用 `pywinauto(UIA)`。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:pyautogui 介绍
本文作者:伟生
发布时间:2026-10-18, 21:10:00
最后更新:2026-10-18, 21:15:00
原始链接:http://yoursite.com/2026/10/18/basic_24_pyautogui/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。