PyAutoGUI实战指南:从基础操作到自动化脚本开发

PyAutoGUI实战指南:从基础操作到自动化脚本开发 1. PyAutoGUI入门解放双手的自动化神器第一次接触PyAutoGUI是在处理一个重复性报表任务时当时每天要花两小时点击相同按钮、输入固定内容。这个Python库彻底改变了我的工作方式——它能让程序像真人一样操控鼠标键盘甚至能通过图像识别定位屏幕元素。PyAutoGUI的核心价值在于用代码替代人工操作。比如你可以自动填写网页表单批量处理图片文件游戏挂机刷副本定时执行系统操作安装只需一行命令pip install pyautogui特别提醒Windows用户直接安装即可Linux/macOS需要额外依赖# macOS pip install pyobjc-core pyobjc # Linux sudo apt-get install scrot python3-tk python3-dev2. 鼠标操控精准到像素级的控制2.1 坐标系与基础移动屏幕坐标系以左上角为原点(0,0)X轴向右延伸Y轴向下延伸。获取屏幕尺寸和鼠标位置import pyautogui # 获取屏幕尺寸 screen_width, screen_height pyautogui.size() # 获取鼠标当前位置 current_x, current_y pyautogui.position()移动鼠标有两种方式# 绝对移动到指定坐标 pyautogui.moveTo(500, 300, duration1) # 1秒内移动到(500,300) # 相对移动基于当前位置 pyautogui.moveRel(100, -50) # 向右100像素向上50像素2.2 高级点击与拖拽实际项目中更常用的复合操作# 双击指定位置 pyautogui.doubleClick(800, 600) # 带轨迹的拖拽适合绘图软件 pyautogui.dragTo(300, 400, duration0.5, buttonleft) pyautogui.dragRel(0, 100, duration0.5) # 向下拖拽100像素避坑指南默认启用安全模式鼠标移到左上角触发异常建议设置操作间隔防止失控pyautogui.PAUSE 0.5 # 每个操作间隔0.5秒3. 键盘控制比人手更快的输入3.1 文字输入与快捷键# 模拟键盘输入支持中文 pyautogui.write(你好Python!, interval0.1) # 组合键CtrlC复制 pyautogui.hotkey(ctrl, c) # 特殊按键 pyautogui.press([enter, tab, backspace])3.2 状态保持技巧# 按住Shift连续输入大写字母 with pyautogui.hold(shift): pyautogui.write(uppercase) # 等效于 pyautogui.keyDown(shift) pyautogui.write(uppercase) pyautogui.keyUp(shift)键盘映射表按键类型示例字母数字a, 1功能键f1, esc修饰键ctrl, alt方向键up, left4. 图像识别让程序看见屏幕4.1 截图与定位# 全屏截图 pyautogui.screenshot(screen.png) # 区域截图左,上,宽,高 pyautogui.screenshot(region(100, 200, 300, 400))4.2 图像匹配实战# 查找按钮位置需提前保存按钮截图button.png button_pos pyautogui.locateOnScreen(button.png, confidence0.8) if button_pos: center pyautogui.center(button_pos) pyautogui.click(center)性能优化技巧限定搜索区域pyautogui.locateOnScreen(icon.png, region(0,0,500,500))启用灰度匹配加速pyautogui.locateOnScreen(icon.png, grayscaleTrue)5. 实战案例自动化数据录入系统最近用PyAutoGUI给财务部开发的自动化工具3小时的工作现在2分钟完成import pyautogui import time def auto_fill_invoice(): # 打开系统 pyautogui.hotkey(win, r) pyautogui.write(invoice_system.exe) pyautogui.press(enter) time.sleep(2) # 等待系统加载 # 循环处理每个文件 for i in range(10): # 定位并点击新建按钮 new_btn pyautogui.locateOnScreen(new_btn.png) pyautogui.click(pyautogui.center(new_btn)) # 填写表单 pyautogui.write(fINV202400{i}) pyautogui.press(tab) pyautogui.write(100.00) # 保存 pyautogui.hotkey(ctrl, s) time.sleep(0.5)关键点每个操作后添加适当延迟使用图像识别提高容错性异常处理机制必不可少遇到定位失败时可以这样处理try: pos pyautogui.locateOnScreen(element.png, timeout5) except pyautogui.ImageNotFoundException: print(未找到目标元素请手动检查) exit()PyAutoGUI最适合处理规则明确的重复性任务对于复杂场景建议结合OpenCV等库增强识别能力。我在电商爬虫项目中就配合使用了Tesseract OCR识别验证码识别成功率达到92%以上。