智能体面试准备(六十六):Web/UI Agent 工程实战——DOM 理解、自愈选择器与失败恢复

智能体面试准备(六十六):Web/UI Agent 工程实战------DOM 理解、自愈选择器与失败恢复

引言

前面(二十四)讲了 GUI Agent 与 Computer Use、(五十三)讲了多模态 Agent 工程。本文把它们落到"生产级 Web/UI Agent":让智能体像人一样操作网页和 App------填表单、点按钮、翻页、抓数据。这是最贴近业务的 Agent 形态之一(RPA 升级、自动化测试、客服代操作),也是坑最多的:页面一改就挂、选择器一失效就傻、反爬一拦就废。

本文讲 Web/UI Agent 的工程骨架:DOM 理解 vs 视觉、自愈选择器、表单与流程编排、反爬对抗、失败恢复。结尾给速答。

一、两条技术路线

复制代码
Web/UI Agent 路线
A. DOM 驱动(结构化): 读页面 DOM/可访问性树 -> 选元素 -> 执行动作
   + 精确、可程序化、便宜
   - 依赖页面结构, 结构变就挂
B. 视觉驱动(Computer Use): 截图 -> VLM 看图 -> 定位坐标 -> 点击
   + 不看内部实现, 拟人, 跨任意界面
   - 坐标不精确, 慢且贵, 需多模态模型(呼应多模态)
混合: 视觉定位 + DOM 校验, 兼顾鲁棒与精确

生产里 DOM 驱动是主力(稳、省),视觉驱动做兜底或处理无结构界面。华为多模态 LLM 方向尤其看重视觉路线。

二、DOM 理解与元素定位

复制代码
DOM 驱动流程
页面 -> 抽取 可访问性树/语义 DOM -> 元素清单(文本/角色/坐标/selector)
     -> Agent 选目标元素 -> 执行(click/type/scroll)

可访问性树(accessibility tree)比原始 HTML 干净:去掉样式噪音,保留"按钮/输入框/链接"及文本,是 Agent 的最佳输入。

代码(用 Playwright 抽可访问性树):

python 复制代码
from playwright.sync_api import sync_playwright

def get_elements(url):
    with sync_playwright() as p:
        b = p.chromium.launch()
        pg = b.new_page()
        pg.goto(url)
        # 抽可访问性快照(结构化)
        tree = pg.accessibility.snapshot()
        els = extract_interactive(tree)   # 递归取 button/input/link
        return els   # [{role, name, bbox, selector}]

三、自愈选择器(核心工程点)

页面重构后,写死的 CSS/XPath 选择器立刻失效。自愈选择器让 Agent 不依赖固定路径:

复制代码
自愈定位策略
1. 多信号匹配: 文本+角色+附近锚点, 不单靠 selector
2. 语义回退: selector 失效 -> 用"按钮文字包含'提交'"再找
3. 属性优先级: 先 stable id > name > 文本 > 坐标
4. 邻居锚定: 找"用户名"输入框旁边的输入控件
5. 失败自愈: 点击失败 -> 重试其他候选 -> 仍失败报人工

代码(语义回退定位):

python 复制代码
def locate(pg, hint):
    # hint: {"text":"提交","role":"button"}
    try:
        return pg.locator(f"text={hint['text']}").first   # 首选文本
    except Exception:
        pass
    # 回退: 角色+关键字
    for el in pg.query_selector_all(f"[role={hint['role']}]"):
        if hint["text"] in (el.inner_text() or ""):
            return el
    raise RuntimeError(f"找不到元素: {hint}")   # 触发自愈/人工

要点:把"定位"封装成带重试+多策略的函数,单点失效不影响整体;每次成功定位可记录"稳定特征"用于下次。

四、表单与流程编排

复制代码
表单填写流程
1. 识别字段(标签->输入框映射): "手机号"旁输入框
2. 按 schema 填值: 类型校验(手机号格式)
3. 失焦/事件触发: 部分页面需 fire event 才校验
4. 提交前校验: 必填/格式/验证码
5. 结果判定: 成功页/错误提示/弹窗

验证码/2FA 是硬墙:生产应接人工(呼应 B63 HITL)或专用验证码服务,不强行破解(合规风险)。

五、反爬与对抗

复制代码
反爬对抗(合规前提: 自有/授权站点)
- 请求特征: 真实 UA/指纹, 限速(呼应六十一), 避免高频
- 行为拟人: 随机间隔/模拟滚动, 不像脚本
- 登录态: 用登录 cookie/令牌(呼应 cookie 管理)
- 检测绕行: headless 特征隐藏, 但遵守 robots/授权
红线: 不爬未授权数据, 不绕付费墙, 不碰隐私(呼应 B62 安全)

强调:Web Agent 必须合法授权,越权抓取有法律风险,这是工程底线。

六、失败恢复与状态管理

复制代码
Web Agent 失败模式与恢复
模式                  恢复
元素找不到            自愈定位/换策略/报人工(B63)
点击无响应            滚动到视口/等待加载/重试
页面跳转丢失上下文    重定位当前页/存状态续跑(呼应 B22)
弹窗遮挡             关弹窗/识别模态再继续
表单校验失败          读错误提示改值重提
网络超时             退避重试(呼应 A66 调度)

状态管理:长流程把"当前步+已填字段"持久化(呼应 B22/B63 断点续跑),崩了能从断点继续而非重头。

七、可观测与评测

复制代码
Web Agent 必看
- 每步动作日志(元素/坐标/结果)
- 自愈触发次数(高=页面不稳)
- 任务成功率(端到端, 呼应 B65 评测)
- 耗时/重试分布
- 失败聚类(哪类页面常挂) -> 补规则

把轨迹接(B65)评测:用固定测试站点跑回归,页面改版后评测掉点就预警。

八、与多模态路线衔接

视觉路线(Computer Use)用 VLM 看截图定位坐标,适合无 DOM 的桌面/原生 App。工程上常"混合":VLM 粗定位区域,DOM 精确定元素;或 DOM 失效时切视觉兜底。这正是(五十三)多模态 Agent 的落地场景。

面试速答

问:DOM 驱动和视觉驱动怎么选?

答:DOM/可访问性树精确便宜,是 Web 主力;视觉(Computer Use)拟人、跨任意界面但慢贵。生产常混合:视觉定位+DOM 校验。

问:自愈选择器为什么重要?

答:页面重构会让写死选择器失效。自愈用多信号(文本/角色/锚点)匹配+语义回退+失败重试,避免一改就挂。

问:Web Agent 的合规红线?

答:只操作自有/授权站点,不爬未授权数据、不绕付费墙、不碰隐私;验证码/2FA 接人工而非破解。

高频追问清单

  1. 可访问性树相比原始 HTML 好在哪?
  2. 自愈定位的多信号优先级怎么排?
  3. 表单字段"标签->输入框"映射怎么自动做?
  4. 验证码/2FA 在 Agent 里怎么处理才合规?
  5. 反爬限速和(六十一)可观测怎么结合?
  6. 长流程状态怎么持久化续跑(呼应 B22)?
  7. 视觉路线坐标不精确怎么补?
  8. Web Agent 成功率怎么评测与回归(呼应 B65)?
  9. DOM 失效时怎么切视觉兜底?
  10. 多页向导(多步跳转)怎么保持上下文不丢?
相关推荐
新知图书4 小时前
16.3 基于MCP的多Agent旅行规划助手项目结构
人工智能·agent·ai agent·智能体
ShallWeL6 小时前
【Agent工程】(6)—— 危险写操作与二次确认
人工智能·agent·工作流·智能体
Bruce_Liuxiaowei8 小时前
2026年8月第4周网络安全形势周报
人工智能·安全·web安全·智能体
ShallWeL9 小时前
RAG 文档切分长度与检索召回
agent·知识库·rag·智能体
DsirNg18 小时前
让流程会停下:AI 自动化的交班设计
自动化·可观测性·幂等性·智能体·ai 工作流·人工在环·工单分流
cczixun21 小时前
从工具交互到自主进化:2026智能体平台产业发展全景解析
人工智能·智能体
luckystar513~1 天前
Hermes 工程化实战专栏:安装部署实战——从装好到跑通第一个任务
人工智能·agent·智能体·hermes·实战专栏·hermes安装配置
新知图书1 天前
14.5 AI试驾预约系统的完整实现
人工智能·agent·ai agent·智能体
thesky1234561 天前
智能体面试准备(六十三):智能体人在回路(HITL)与审批流工程——中断、审批、回滚与可审计闭环
智能体·回滚·审批流·hitl·人在回路·中断续跑·可审计