前9课,我们搞定了:
Excel / Word / PDF 自动处理
半夜定时跑脚本,早上收成果
但现实职场总有“硬骨头”:
公司那套老掉牙的 ERP,没接口,只能人工点窗口录数据
某桌面软件,必须手动点“导出”选路径
要登录几十个网站,输账号密码能自动,验证码才要人看
游戏里刷怪、设计软件里重复画同一图形
这些场景,pandas、openpyxl 都束手无策——因为它们操作的是文件,而这些,要操作的是界面(UI)。
✅ 今天,我们祭出终极武器:
模拟鼠标 + 模拟键盘
让 Python 化身“隐形人”,坐你电脑前,以每秒 10 次的速度狂点猛敲,你只管喝茶、摸鱼、去开会。
这,就是传说中的“物理外挂”!🎮⌨️
🎯 为什么要用“模拟键鼠”?
脚本自动定位输入,5 分钟完成,100% 准确。
循环操作,无人值守。
脚本循环 1000 次,人去吃午饭。
一套连招,行云流水,比老员工还熟
💡 核心逻辑:人能点的,Python 就能点,而且更快、更准、不累。
🛠️ 神器登场 —— PyAutoGUI
跨平台鼠标键盘控制库,能:
🖱 移动、点击、拖拽鼠标
⌨ 输入文字、按组合键(Ctrl+C、Alt+Tab)
📸 截图找图,智能定位按钮(不靠死记坐标)
安装:
pip install pyautogui# Mac 需额外:pip install pyobjc-framework-Quartz pyobjc-framework-Cocoa
⚠ 保命技巧(必看)
运行前记住:
把鼠标甩到屏幕左上角 (0,0),脚本会立刻停止!
这是 pyautogui 的内置安全机制,防止脚本失控乱点。
(建议先在虚拟机或小窗口测试,别在全屏重要工作中直接跑未知代码)
⚔️ 基础招式:操控鼠标
import pyautogui# 获取屏幕尺寸width, height = pyautogui.size()# 瞬间移动pyautogui.moveTo(100, 100)# 缓慢移动(更像真人)pyautogui.moveTo(500, 500, duration=2)# 相对移动pyautogui.moveRel(100, 50, duration=1)# 点击pyautogui.click()pyautogui.click(x=200, y=200)pyautogui.doubleClick()pyautogui.rightClick()# 拖拽pyautogui.dragTo(500, 500, duration=1.5)
🧪 小实验:画正方形
import pyautoguiimport timetime.sleep(3) # 给你3秒时间把鼠标放到画图板里pyautogui.click() # 点击开始distance = 200pyautogui.drag(distance, 0, duration=0.5) # 右pyautogui.drag(0, distance, duration=0.5) # 下pyautogui.drag(-distance, 0, duration=0.5) # 左pyautogui.drag(0, -distance, duration=0.5) # 上
⌨ 基础招式:操控键盘
# 输入文字importpyautoguipyautogui.write('Hello Office Automation!', interval=0.1)# 按单键pyautogui.press('enter')pyautogui.press('backspace')pyautogui.press('f1')# 组合键pyautogui.hotkey('ctrl', 'c')pyautogui.hotkey('ctrl', 'v')pyautogui.hotkey('alt', 'tab')pyautogui.hotkey('ctrl', 'shift', 'esc')
🔍 进阶大招:图像识别(找图点击)
❌ 固定坐标:窗口一挪就废
✅ 找图点击:只要按钮长这样,就能找到并点
告诉 Python:“找到屏幕上长得像这张图片的按钮,然后点它。”无论按钮在哪,只要它长这样,就能找到!
1. 准备素材
- 截取你要点击的按钮图标(如“提交”按钮),保存为
submit_btn.png。 - 确保截图清晰,最好包含按钮的独特特征。
2. 代码实现
import pyautoguiimport time# 设置置信度 (confidence),0.8 表示 80% 相似即可匹配 (需安装 opencv-python)# pip install opencv-pythonlocation = pyautogui.locateOnScreen('submit_btn.png', confidence=0.8)if location: print(f"找到按钮了!位置:{location}")# 获取按钮中心点坐标 center_point = pyautogui.center(location)# 点击中心点 pyautogui.click(center_point) print("已点击提交按钮!")else: print("没找到按钮,请检查截图或屏幕内容。")
💡 应用场景:
🚀 综合实战:全自动登录旧版 ERP 系统
任务背景:公司有一个古老的 B/S 架构 ERP 系统,没有 API,每次都要:
🐍 完整代码框架:
import pyautoguiimport timeimport os# 配置区域URL = "http://erp.mycompany.com"USERNAME = "zhangsan"PASSWORD = "mypassword123"# 确保这些截图文件在当前目录下IMG_USER_BOX = 'user_box.png'IMG_PASS_BOX = 'pass_box.png'IMG_LOGIN_BTN = 'login_btn.png'IMG_MENU_REPORT = 'menu_report.png'IMG_EXPORT_BTN = 'export_btn.png'defsafe_type(text):"""安全输入,防止输入过快""" pyautogui.write(text, interval=0.1)defmain(): print("🤖 机器人启动:准备登录 ERP...")# 1. 打开浏览器 (假设已通过快捷键或其他方式打开,或者这里模拟打开)# 这里演示模拟打开浏览器的快捷键:Win + R -> 输入 chrome -> 回车 pyautogui.hotkey('win', 'r') time.sleep(0.5) safe_type('chrome') pyautogui.press('enter') time.sleep(3) # 等待浏览器启动# 2. 输入网址 safe_type(URL) pyautogui.press('enter') time.sleep(5) # 等待网页加载 (根据网速调整)# 3. 定位并输入用户名 print("🔍 寻找用户名输入框...") user_loc = pyautogui.locateOnScreen(IMG_USER_BOX, confidence=0.8)if user_loc: pyautogui.click(pyautogui.center(user_loc)) safe_type(USERNAME) print("✅ 用户名输入成功")else: print("❌ 未找到用户名框,终止任务")return# 4. 定位并输入密码 print("🔍 寻找密码输入框...") pass_loc = pyautogui.locateOnScreen(IMG_PASS_BOX, confidence=0.8)if pass_loc: pyautogui.click(pyautogui.center(pass_loc)) safe_type(PASSWORD) print("✅ 密码输入成功")else: print("❌ 未找到密码框,终止任务")return# 5. 点击登录按钮 print("🔍 寻找登录按钮...") login_loc = pyautogui.locateOnScreen(IMG_LOGIN_BTN, confidence=0.8)if login_loc: pyautogui.click(pyautogui.center(login_loc)) print("✅ 点击登录") time.sleep(5) # 等待登录跳转else: print("❌ 未找到登录按钮")return# 6. 进入菜单 -> 点击日报表 print("🔍 寻找日报表菜单...") menu_loc = pyautogui.locateOnScreen(IMG_MENU_REPORT, confidence=0.8)if menu_loc: pyautogui.click(pyautogui.center(menu_loc)) time.sleep(2)# 7. 点击导出 print("🔍 寻找导出按钮...") export_loc = pyautogui.locateOnScreen(IMG_EXPORT_BTN, confidence=0.8)if export_loc: pyautogui.click(pyautogui.center(export_loc)) print("🎉 任务完成!报表正在下载...")else: print("❌ 未找到导出按钮")else: print("❌ 未找到菜单")if __name__ == "__main__":# 给予用户逃跑时间 print("5秒后开始执行,请将鼠标移至左上角可紧急停止!") time.sleep(5) main()
运行结果:
⚠️ 避坑指南(新手必看)
📝内容小结&互动挑战
🌟 小结
🎉 恭喜!你已掌握RPA(机器人流程自动化)核心雏形:
鼠标精准控制
键盘自动输入
图像识别点击
紧急停止保命技巧
这意味着:
只要是人眼能看到、鼠标键盘能操作的软件,Python 都能自动化!
老旧 C/S 软件、网页后台、单机游戏……统统拿下。
在评论区分享一个你工作中最想自动化的“傻瓜式点击操作”!到这里你已经是入门阶段的巅峰了!现在的你,完全有能力编写脚本,解决办公室里 90% 的重复性手工操作。
去试试吧,让你的鼠标在屏幕上跳一支舞,而你,只需静静欣赏! 💃🕺
点赞
收藏
关注