当前位置:首页>python>第10课:鼠标自己会动?Python“物理外挂”来了,点烂按钮、输满表单,你只管喝茶

第10课:鼠标自己会动?Python“物理外挂”来了,点烂按钮、输满表单,你只管喝茶

  • 2026-09-07 20:05:16
第10课:鼠标自己会动?Python“物理外挂”来了,点烂按钮、输满表单,你只管喝茶

前9课,我们搞定了:

  • Excel / Word / PDF 自动处理

  • 半夜定时跑脚本,早上收成果

但现实职场总有“硬骨头”:

  • 公司那套老掉牙的 ERP,没接口,只能人工点窗口录数据

  • 某桌面软件,必须手动点“导出”选路径

  • 要登录几十个网站,输账号密码能自动,验证码才要人看

  • 游戏里刷怪、设计软件里重复画同一图形

这些场景,pandas、openpyxl 都束手无策——因为它们操作的是文件,而这些,要操作的是界面(UI)。

✅ 今天,我们祭出终极武器:

模拟鼠标 + 模拟键盘

让 Python 化身“隐形人”,坐你电脑前,以每秒 10 次的速度狂点猛敲,你只管喝茶、摸鱼、去开会。

这,就是传说中的“物理外挂”!🎮⌨️

🎯 为什么要用“模拟键鼠”?

  1. 脚本自动定位输入,5 分钟完成,100% 准确。

  2. 循环操作,无人值守。

  3. 脚本循环 1000 次,人去吃午饭。

  4. 一套连招,行云流水,比老员工还熟

💡 核心逻辑:人能点的,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,每次都要:

  • 打开 Chrome,输入网址。
  • 输入用户名、密码。点击“登录”。
  • 等待加载,点击左侧菜单“日报表”。
  • 点击“导出 Excel”。

🐍 完整代码框架:

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()

运行结果:


⚠️ 避坑指南(新手必看)

  • 坐标不准 → 多用图像识别,少用固定坐标。

  • 运行太快→ 关键步骤加 sleep,或循环等待元素出现。

  • 输入法干扰→ 切英文输入法,或模拟 Shift 切换。

  • 锁屏/休眠 → 定时任务运行时勿锁屏、勿休眠。

  • 找不到图→ 重截图、降 confidence、截按钮核心特征。


📝内容小结&互动挑战

🌟 小结

🎉 恭喜!你已掌握RPA(机器人流程自动化)核心雏形:

  • 鼠标精准控制

  • 键盘自动输入

  • 图像识别点击

  • 紧急停止保命技巧

这意味着:

只要是人眼能看到、鼠标键盘能操作的软件,Python 都能自动化!

老旧 C/S 软件、网页后台、单机游戏……统统拿下。

在评论区分享一个你工作中最想自动化的“傻瓜式点击操作”!

到这里你已经是入门阶段的巅峰了!现在的你,完全有能力编写脚本,解决办公室里 90% 的重复性手工操作。

去试试吧,让你的鼠标在屏幕上跳一支舞,而你,只需静静欣赏! 💃🕺

觉得有用?
 点赞
 收藏
 关注
把这份“准时下班”的秘密武器分享给你的团队! 👇

最新文章

随机文章