基于 AI 视觉大模型(Vision-Language Models, VLMs) 的 UI 自动化,正在颠覆传统基于 DOM/XPath 的自动化测试范式。它不再依赖页面结构稳定性,而是像人类一样“看懂”界面,实现 跨平台、抗重构、高鲁棒性 的自动化操作。


一、为什么需要 AI 视觉 UI 自动化?

传统 UI 自动化的痛点

问题 视觉 AI 如何解决
元素定位失效(前端改 class/id) → 直接识别按钮文字/图标,无需选择器
混合技术栈难覆盖(WebView + Native) → 统一通过截图理解界面
动态内容难处理(Canvas、视频、游戏) → 视觉模型可识别图像内容
多端一致性验证难(iOS/Android/Web) → 同一套逻辑验证不同平台截图

核心优势所见即所控,真正实现“人类视角”的自动化。


二、核心技术原理

架构流程

在这里插入图片描述

关键能力

  1. OCR + Layout 感知:不仅识别文字,还理解“登录按钮在手机号下方”
  2. 图标/状态识别:识别 ✔️、❌、加载动画、红点等非文本元素
  3. 语义推理:理解“点击右上角三个点” = 点击 ⋮ 图标

三、主流工具与平台对比

工具 类型 核心能力 适用场景
Microsoft Gaze 开源框架 • 基于 Florence-2 VLM
• 支持 Playwright 集成
• 可训练自定义 UI 词汇
Web 自动化,研究前沿
Applitools Ultrafast Grid 商业 SaaS • 视觉测试 + AI 定位
• 跨浏览器/设备比对
• 智能忽略动态区域
企业级视觉回归
TestRigor 商业平台 • 纯自然语言编写用例
• “click login button”
• 内置视觉引擎
无编码团队快速上手
SikuliX 开源(传统) • 基于图像模板匹配
• 需手动截取按钮图
桌面应用,简单场景
自研方案(VLM + Appium) 定制 • 接入 Qwen-VL / GPT-4V
• 私有化部署
• 业务定制训练
高安全/高定制需求

📌 推荐组合

  • Web:Playwright + Gaze(开源免费)
  • App:Appium + 自研 VLM 服务
  • 快速验证:TestRigor(免开发)

四、实战示例:用 Gaze + Playwright 实现视觉自动化

步骤 1:安装依赖

pip install playwright gaze
playwright install chromium

步骤 2:编写视觉自动化脚本

from playwright.sync_api import sync_playwright
from gaze import Gaze

# 初始化
gaze = Gaze(model="microsoft/Florence-2-base")  # 或使用 API
with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://example-login.com")

    # 截图并让 AI 理解界面
    screenshot = page.screenshot()
    ui_elements = gaze.describe(screenshot)  # 返回结构化 UI 描述

    # 示例输出:
    # {
    #   "text": ["用户名", "密码", "登录"],
    #   "buttons": [{"text": "登录", "bbox": [x1,y1,x2,y2]}],
    #   "inputs": [{"label": "用户名", "bbox": [...]}]
    # }

    # 执行视觉操作
    if "登录" in ui_elements["text"]:
        bbox = get_bbox_by_text(ui_elements["buttons"], "登录")
        # 计算中心点并点击
        x = (bbox[0] + bbox[2]) // 2
        y = (bbox[1] + bbox[3]) // 2
        page.mouse.click(x, y)

    browser.close()

步骤 3:高级操作 —— 自然语言驱动

# 直接告诉 AI 要做什么
instruction = "在用户名输入框中输入 'test@example.com'"
action = gaze.plan_action(screenshot, instruction)
# 返回: {"type": "click", "coords": [x, y]}
#       {"type": "type", "text": "test@example.com"}

if action["type"] == "click":
    page.mouse.click(action["coords"][0], action["coords"][1])
elif action["type"] == "type":
    page.keyboard.type(action["text"])

五、典型应用场景

场景 1:抗重构的回归测试

  • 前端团队重写 React 组件,class 全变
  • 传统方案:90% 脚本失效
  • 视觉方案:只要 UI 不变,脚本继续运行

场景 2:跨端一致性验证

# 同时截图 iOS / Android / Web
ios_screenshot = take_ios_screenshot()
android_screenshot = take_android_screenshot()

# 比较关键元素位置/文案是否一致
assert gaze.compare_layout(ios_screenshot, android_screenshot, tolerance=0.95)

场景 3:无法获取 DOM 的场景

  • 游戏 UI(Unity/Unreal)
  • 桌面软件(Electron 外的 Win32 应用)
  • 远程桌面 / Citrix 环境

场景 4:智能探索性测试

  • AI 自动遍历界面:“点击所有按钮,记录崩溃”
  • 发现隐藏路径:“这个图标从未被点击过”

六、挑战与应对策略

挑战 解决方案
性能慢(VLM 推理耗时) • 缓存 UI 描述
• 仅关键步骤用视觉
• 使用轻量模型(如 MobileViT)
动态内容误判(时间、倒计时) • 预处理屏蔽动态区域
• Applitools 的“动态内容忽略”功能
小图标识别不准 • 结合 OCR + 图标 embedding
• 自定义微调模型(用业务图标数据集)
隐私与安全(截图上传云端) • 私有化部署 VLM(如 Qwen-VL-Chat)
• 本地 GPU 推理
成本高 • 混合策略:核心路径用视觉,普通路径用传统定位

七、未来演进方向

  1. 多模态 Agent
    • AI 不仅看图,还能听语音提示、读日志,综合决策
  2. 自修复自动化
    • 当传统脚本失败时,自动切换视觉模式重试
  3. UI 生成 → UI 测试闭环
    • 设计稿(Figma)→ 自动生成视觉测试用例
  4. 3D UI 支持
    • AR/VR 界面的自动化测试(需 3D 视觉模型)

结语:从“找元素”到“看懂界面”

AI 视觉 UI 自动化,不是替代 Selenium,而是超越它。

它让自动化测试回归本质:
关注用户看到什么,而不是代码怎么写
适应变化,而非恐惧变化

当你能用“点击登录按钮”这样的人类语言驱动测试,
你就拥有了面向未来的自动化能力。

🚀 行动建议
从一个高维护成本的 UI 用例开始,尝试用 Gaze + Playwright 重构——
你可能会惊讶于它的鲁棒性与简洁性。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐