PyAutoGUI实战指南:从基础操作到自动化脚本编写
1. PyAutoGUI入门解放双手的自动化神器每次看到同事在电脑前重复点击几百次鼠标时我都想冲过去安利PyAutoGUI。这个Python库能让你用代码控制鼠标键盘把枯燥的机械操作变成一键运行的脚本。上周我帮财务部写了个自动填报表的脚本原本需要3小时的手工操作现在20秒就能完成。安装只需要一行命令pip install pyautogui建议加上清华源加速安装pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui初次使用时建议在代码开头加上这两行安全设置import pyautogui pyautogui.PAUSE 1 # 每个操作间隔1秒 pyautogui.FAILSAFE True # 启用紧急停止功能安全提示当脚本失控时快速将鼠标移到屏幕左上角可立即终止程序2. 鼠标操控精准点击的六种姿势2.1 基础移动与定位屏幕坐标系以左上角为原点(0,0)先获取当前分辨率很重要screen_width, screen_height pyautogui.size()移动鼠标有两种方式# 绝对坐标移动耗时2秒到达目标位置 pyautogui.moveTo(500, 500, duration2) # 相对当前位置移动向右移100px向下移50px pyautogui.move(100, 50)我常用这个技巧获取实时坐标来调试脚本while True: print(pyautogui.position()) # 持续输出鼠标位置 time.sleep(0.5)2.2 高级点击技巧这些方法在自动化测试中特别实用# 左键单击三种等效写法 pyautogui.click(100, 200) pyautogui.leftClick(100, 200) pyautogui.mouseDown(100, 200, buttonleft) pyautogui.mouseUp() # 右键菜单操作 pyautogui.rightClick(300, 400) # 拖动文件先移动到起点再拖到终点 pyautogui.dragTo(800, 600, duration1)3. 键盘控制比人手更快的输入法3.1 基础文本输入自动填写表单时可以这样用# 普通输入间隔0.25秒每个字符 pyautogui.write(Hello world!, interval0.25) # 密码输入推荐用password方法避免泄露 pyautogui.write(mypassword, interval0.1)特殊按键需要这样处理# 组合键示例AltTab切换窗口 pyautogui.hotkey(alt, tab) # 单键操作 pyautogui.press(enter) # 回车 pyautogui.press([tab, tab, down]) # 连按tab两次再按方向下键3.2 非英语输入解决方案处理中文输入需要特殊技巧# 方案1复制粘贴法 import pyperclip pyperclip.copy(中文内容) pyautogui.hotkey(ctrl, v) # 方案2切换输入法后输入拼音 pyautogui.write(zhongwen, interval0.1) pyautogui.press(space) # 空格选词4. 实战案例自动处理日报系统4.1 项目背景市场部每天要在内部系统提交20份相同格式的日报我为他们开发了这个自动化方案def submit_daily_report(): # 打开浏览器 pyautogui.hotkey(win, r) pyautogui.write(chrome.exe) pyautogui.press(enter) time.sleep(3) # 等待浏览器启动 # 填写表单 pyautogui.click(300, 400) # 点击标题栏 pyautogui.write(市场活动日报, interval0.1) pyautogui.press(tab) pyautogui.write(datetime.now().strftime(%Y-%m-%d)) # ...更多字段填写 # 提交保存 pyautogui.click(800, 600) # 提交按钮位置4.2 容错机制设计实际运行中我增加了这些保护措施try: # 验证窗口是否存在 win pyautogui.getWindowsWithTitle(日报系统)[0] win.activate() # 图像识别确认按钮 submit_btn pyautogui.locateOnScreen(submit_btn.png) if submit_btn: pyautogui.click(submit_btn) else: raise Exception(未找到提交按钮) except Exception as e: logging.error(f执行失败: {str(e)}) pyautogui.alert(自动化执行出错请手动处理)5. 高级技巧图像识别与自动化测试5.1 基于图像的自动化当元素没有固定坐标时图像识别更可靠# 查找屏幕上匹配的图片需提前截图 button_pos pyautogui.locateOnScreen(button.png, confidence0.9) if button_pos: pyautogui.click(button_pos) else: print(未找到目标按钮)实战经验截图时建议用PNG格式保持原尺寸避免缩放导致识别失败5.2 自动化测试框架集成结合pytest可以做UI自动化测试def test_login_flow(): # 打开应用 pyautogui.click(icon_position) # 验证登录窗口 assert pyautogui.locateOnScreen(login_title.png) # 执行登录操作 pyautogui.write(testuser) pyautogui.press(tab) pyautogui.write(password123) pyautogui.press(enter) # 验证登录结果 time.sleep(2) assert pyautogui.locateOnScreen(welcome.png)6. 性能优化与异常处理6.1 加速执行技巧通过调整参数提升效率# 关闭动画效果默认每步0.1秒 pyautogui.PAUSE 0.05 # 50毫秒间隔 # 禁用鼠标移动动画 pyautogui.MINIMUM_DURATION 0 # 立即移动 pyautogui.MINIMUM_SLEEP 0 pyautogui.PAUSE 06.2 常见问题解决方案这些坑我都亲自踩过多显示器问题用pyautogui.size()获取主显示器尺寸DPI缩放影响在Windows设置中关闭显示缩放权限问题以管理员身份运行Python脚本焦点丢失操作前先用win.activate()激活窗口最后分享一个监控脚本可以实时显示操作日志import logging logging.basicConfig(filenameautogui.log, levellogging.INFO) def log_action(action): pos pyautogui.position() logging.info(f{action} at {pos}) print(f[DEBUG] {action} ({pos.x}, {pos.y}))
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2491176.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!