智能体面试准备(六十六):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. 多页向导(多步跳转)怎么保持上下文不丢?
相关推荐
漫话明说15 小时前
工智能安全描述性综述(2026):基于30份行业报告的梳理
安全·智能体·ai安全
Alice-YUE1 天前
工业级 AI Agent 架构:5 层、2 范式、4 原则,一次讲透
面试·系统架构·大模型·ai agent·智能体
边界智能1 天前
边界智能通过人工智能管理体系认证,AI 研发及管理能力获权威认可
人工智能·ai·智能体
cxr8281 天前
Hermes × 本地 Ollama × qwen3.8 效能优化研究实验报告
人工智能·提示词·智能体
维核科技1 天前
AI 守护城市:从交通信号到无人机巡检
ai·智能体
ZGi.ai2 天前
审批一直没人处理,Workflow 怎么做超时升级?
工作流·智能体·审批流程·任务自动化·zgi·超时升级
东方-教育技术博主2 天前
自进化编码智能体04——记忆治理是如何体现的,我如何人工介入进行记忆治理
智能体
墨心@2 天前
《AI Agent 入门》
agent·智能体·datawhale共学
美林数据Tempodata3 天前
智能体技术应用专业(510219)怎么建:先定岗位能力链,再定课程与实训
大数据·人工智能·智能体·产教融合·职业教育
Xuantong_903 天前
WAIC2026 深度观察:玄同科技 × 润建股份,共建中国东盟 AI 跨境 Token 产业生态,开启数字出海新范式
人工智能·ai·智能体