Open-AutoGLM与Selenium对比:移动端自动化优势分析
1. 为什么传统方案在手机端“水土不服”
做自动化测试或批量操作的朋友可能很熟悉 Selenium——它在网页端几乎是行业标准:稳定、生态成熟、文档丰富。但当你把目光转向手机屏幕,问题就来了。
Selenium 本质是为浏览器设计的。它依赖 WebDriver 协议与 Chrome/Firefox 通信,靠 DOM 树定位元素、执行点击输入。可安卓原生 App 没有 DOM,没有 HTML 结构,只有层层嵌套的 View 组件;iOS 更封闭,连 ADB 都不支持。想用 Selenium 控制微信、小红书或抖音?基本行不通——除非你强行注入 WebView 调试桥,但那需要 root 或越狱,既不安全也不现实。
更现实的痛点是:
- 写脚本像考古:每次 UI 更新,XPath 或 resource-id 全失效,维护成本飙升;
- 看不懂界面:它不知道“这个红色按钮是‘立即下单’,那个带放大镜图标的是搜索框”,只能靠坐标或硬编码 ID 猜;
- 不会思考:你得自己拆解“搜美食→点第一个结果→截图保存”为 12 行代码,AI 不参与决策,只当执行机器。
而 Open-AutoGLM 的出现,不是给旧工具打补丁,而是换了一套认知逻辑:它不依赖代码定位,而是“看懂屏幕”,再“像人一样行动”。
2. Open-AutoGLM 是什么:一个会“看”会“想”会“做”的手机AI代理
2.1 核心能力一句话说清
Open-AutoGLM 是智谱开源的手机端 AI Agent 框架,它把视觉语言模型(VLM)和安卓自动化能力拧成一股绳:用眼睛看屏幕(截图识别),用大脑理解意图(自然语言解析),用手执行操作(ADB 指令)。你不用写一行定位代码,只要说“打开小红书搜美食”,它就能从解锁手机开始,一路点开 App、点搜索框、输入文字、点搜索按钮——全程自主规划、动态纠错。
2.2 和 Phone Agent 的关系:同一技术栈的两种形态
你可能见过 AutoGLM-Phone 或 Phone Agent 这些名字。它们不是不同项目,而是 Open-AutoGLM 生态里的不同封装方式:
- AutoGLM-Phone是框架的原始命名,强调其基于视觉语言模型(如 GLM-4V)的多模态感知能力;
- Phone Agent是面向终端用户的易用封装,内置了敏感操作确认、人工接管入口、远程调试通道等生产级功能;
- Open-AutoGLM是当前开源仓库名,包含完整控制端代码、文档和部署示例,是开发者直接上手的“源代码包”。
三者共享同一套内核:屏幕理解靠 VLM 编码图像+文本,动作规划靠 LLM 推理步骤,执行层靠 ADB 命令驱动。区别只在于封装粒度和默认配置。
2.3 它真正突破的三个边界
| 边界类型 | 传统方案(如 Appium) | Open-AutoGLM |
|---|---|---|
| 界面理解方式 | 依赖开发预留的 accessibility ID 或 resource-id,UI 一改全崩 | 直接分析屏幕截图,识别图标、文字、布局关系,无需预埋标识 |
| 指令表达方式 | 必须写代码:“find_element(By.ID, 'search_btn').click()” | 支持自然语言:“点右上角那个放大镜”、“把第三行第二个商品加购” |
| 异常处理逻辑 | 报错即中断,需人工介入重跑 | 自动检测失败(如按钮未出现),回退一步重新截图分析,尝试替代路径 |
这不是“自动化升级”,而是“交互范式迁移”——从程序员思维回归人类思维。
3. 和 Selenium 对比:不是功能叠加,而是维度跃迁
3.1 场景还原:完成同一个任务,两种写法
假设任务是:“在京东 App 里搜索‘无线耳机’,进入销量最高商品页,截图并保存为 jd_headphone.png”。
Selenium(伪代码,实际不可行但示意逻辑)
# 注意:这在原生 App 中根本无法运行!仅作对比示意 driver.find_element(By.ID, "com.jingdong.app.mall:id/search_tab").click() driver.find_element(By.ID, "com.jingdong.app.mall:id/search_input").send_keys("无线耳机") driver.find_element(By.ID, "com.jingdong.app.mall:id/search_submit").click() # 后续需手动找“销量排序”按钮ID,再找第一个商品……Open-AutoGLM(真实可用命令)
python main.py \ --device-id 123456789 \ --base-url http://192.168.1.100:8800/v1 \ --model "autoglm-phone-9b" \ "在京东App搜索无线耳机,按销量排序,点第一个商品,截图保存为jd_headphone.png"
关键差异在哪?
- Selenium 要求你精确知道每个控件的 ID,且这些 ID 在不同版本、不同厂商定制系统中千差万别;
- Open-AutoGLM 只需描述“做什么”,它自己截图、识别“搜索”文字位置、找到放大镜图标、判断“销量排序”按钮样式、定位商品列表结构——所有视觉推理都在后台完成。
3.2 技术栈对比:底层逻辑完全不同
| 维度 | Selenium | Open-AutoGLM |
|---|---|---|
| 通信协议 | WebDriver(HTTP + JSON Wire Protocol) | ADB(Android Debug Bridge)+ HTTP API(调用云端 VLM/LMM) |
| 界面感知 | 无感知,依赖开发者暴露的 accessibility 层 | 多模态感知:每步操作前自动截屏,VLM 分析图像+OCR 文字+上下文指令 |
| 动作生成 | 预定义命令(click/tap/type) | LLM 规划动作序列:“1. 滑动到页面底部;2. 找‘我的订单’文字;3. 点击右侧箭头图标” |
| 适配成本 | App 每次更新需重录脚本,平均耗时 2–5 小时 | 同一指令在新版本 App 上大概率仍有效,因识别逻辑基于视觉而非 ID |
| 学习门槛 | 需掌握 Python/Java、XPath/CSS 选择器、Appium 架构 | 只需会写中文指令,开发者可快速阅读main.py修改参数 |
Selenium 是“精密仪器”,需要校准、维护、专人操作;Open-AutoGLM 是“通用工具人”,听懂人话就能开工。
4. 本地部署实操:三步让 AI 接管你的手机
4.1 硬件与环境准备:比装个微信还简单
你不需要服务器、GPU 或复杂配置。只需三样东西:
- 一台 Windows/macOS 电脑(Python 3.10+);
- 一部 Android 7.0+ 手机(真机或模拟器均可);
- 一个能上网的环境(用于调用云端模型,后续可私有化部署)。
ADB 工具是唯一需要手动配置的组件。Windows 用户只需:
- 下载 platform-tools;
- 解压后复制路径(如
C:\adb); - 右键“此电脑”→属性→高级系统设置→环境变量→系统变量→Path→新建→粘贴路径;
- 打开命令行输入
adb version,看到版本号即成功。
macOS 用户在终端执行:
export PATH=${PATH}:/Users/yourname/Downloads/platform-tools(将路径替换为你实际解压位置,并加入~/.zshrc永久生效)
4.2 手机端设置:5 分钟搞定,无 root 无风险
- 开启开发者模式:手机“设置→关于手机→版本号”,连续点击 7 次;
- 开启 USB 调试:“设置→开发者选项→USB 调试”打钩;
- 安装 ADB Keyboard(关键!):
- 下载 ADB Keyboard APK;
- 安装后进入“设置→语言与输入法→当前输入法”,切换为 ADB Keyboard;
- 此举让 AI 能通过 ADB 发送任意文字(包括中文、符号),无需依赖 App 内置键盘。
注意:整个过程不获取 root 权限,不安装可疑软件,所有操作均在安卓官方调试框架内,安全性等同于用电脑投屏。
4.3 一键启动:从克隆代码到执行指令
# 1. 克隆仓库(国内用户建议用镜像加速) git clone https://gitee.com/zai-org/Open-AutoGLM # 或 github 地址 cd Open-AutoGLM # 2. 安装依赖(自动处理 ADB 连接、图像处理等) pip install -r requirements.txt pip install -e . # 3. 连接手机(USB 或 WiFi) adb devices # 应显示设备 ID,如 123456789 # 4. 运行指令(以云服务为例) python main.py \ --device-id 123456789 \ --base-url http://192.168.1.100:8800/v1 \ --model "autoglm-phone-9b" \ "打开微博,搜索‘今日热点’,截取前三个热搜话题保存为 weibo_hot.png"执行后,你会看到终端实时打印每一步动作:
[INFO] 截取屏幕 → 识别到“微博”App 图标 → 点击 [INFO] 等待首页加载 → 识别到搜索框图标 → 点击 [INFO] 输入文字“今日热点” → 点击搜索按钮 [INFO] 识别热搜列表 → 截取区域 (100,200,800,400) → 保存为 weibo_hot.png整个过程无需人工干预,失败时自动重试,就像有个同事在帮你操作手机。
5. 远程控制与 API 集成:不只是命令行玩具
5.1 WiFi 远程连接:摆脱 USB 线缆束缚
USB 连接虽稳定,但限制物理距离。Open-AutoGLM 支持纯 WiFi 远程控制:
# 第一次需 USB 连接启用 TCP/IP adb tcpip 5555 # 断开 USB,用 WiFi 连接(手机和电脑在同一局域网) adb connect 192.168.1.105:5555 # 替换为手机实际 IP之后所有--device-id参数可直接填192.168.1.105:5555,实现办公室电脑控制家里手机,或测试机群统一调度。
5.2 Python API:嵌入你自己的业务系统
不想总敲命令?用几行代码把它变成你系统的“自动化模块”:
from phone_agent.adb import ADBConnection from phone_agent.agent import PhoneAgent # 初始化连接 conn = ADBConnection() conn.connect("192.168.1.105:5555") # 创建 AI 代理(指定模型地址) agent = PhoneAgent( base_url="http://192.168.1.100:8800/v1", model_name="autoglm-phone-9b", device_id="192.168.1.105:5555" ) # 一行代码触发任务 result = agent.run("登录淘宝,进入我的订单,导出最近 7 天订单为 CSV") print(result.screenshot_path) # 获取截图路径 print(result.log) # 查看详细执行日志这意味着你可以:
- 给客服系统增加“帮用户查订单”按钮;
- 为电商运营平台添加“自动巡检竞品价格”定时任务;
- 在教育 App 中实现“学生操作步骤智能辅导”;
- 所有场景,都不再需要写重复的 UI 定位脚本。
6. 总结:移动端自动化的下一站在哪
Selenium 教会我们“如何让机器执行指令”,而 Open-AutoGLM 让我们开始思考“如何让机器理解意图”。这不是替代关系,而是进化关系——就像 Excel 宏没有取代编程,但让千万非程序员第一次拥有了自动化能力。
Open-AutoGLM 的真正价值,不在于它能多快点开一个 App,而在于它打破了“自动化必须由开发者编写”的铁律。市场运营人员可以自己写指令批量下载竞品截图,产品经理能用自然语言验证新功能流程,甚至老人也能语音说出“帮我把微信聊天记录发到邮箱”,由 AI 全程代劳。
它把移动端自动化,从一项技术能力,变成了人人可用的交互接口。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。