给 AI Agent 提供页面感知时,为什么优先用可访问性树(accessibility tree)快照而不是原始 HTML DOM 或截图?
本文解释 AI Agent 为何优先采用可访问性树快照而非原始 HTML DOM,权衡 token 成本、语义密度、可操作元素识别,并给出具体场景与失败边界。
程序员面试题库第 1 页,收录第 1–50 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
本文解释 AI Agent 为何优先采用可访问性树快照而非原始 HTML DOM,权衡 token 成本、语义密度、可操作元素识别,并给出具体场景与失败边界。
围绕“定位器依赖 accessible name 时,浏览器如何计算元素的可访问名称,多个命名来源冲突时哪个生效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确命名来源优先级顺序及由此导致的定位失败诊断。
围绕“aria-hidden="true" 与 display:none 对基于可访问性树的 Agent 感知有什么本质区”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两者在可访问性树中的可见性差异及对 Agent 决策的误导风险。
围绕“Playwright 执行 click 前的自动等待检查哪些可行动性(actionability)条件,各自拦截什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 visible/stable/enabled/receives events 各条件拦截的具体故障类型。
围绕“Agent 遇到验证码或人机验证时,应如何检测并把控制权交还人类而不是尝试绕过”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确检测信号与升级(human-in-the-loop)交接的设计。
围绕“Playwright 的 check 与 setChecked 如何保证勾选操作的幂等性,为什么比直接 click ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确目标状态语义对重试安全的意义。
本题考察登录表单中三个常见定位器的优先级选择。结论是 getByLabel 语义绑定最强,getByPlaceholder 是属性提示,getByText 纯粹按可见文本匹配且脆弱。解释各自绑定来源与为何国际化会破坏 text 定位。
围绕“Cookie 同意横幅遮挡交互元素时,Agent 应把它作为一次性前置清除步骤还是每步防御性处理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确前置清除加状态复用与每步检测的成本权衡。
围绕“Playwright 的 alert/confirm 对话框默认自动 dismiss,为什么必须在触发动作之前注册 ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确对话框阻塞 JS 执行导致后置注册无效的机理。
围绕“Playwright 的 dragTo 与手动 mouse.down/move/up 分步拖拽在目标页面上效果不同,”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 HTML5 拖放事件序列对分步模拟的要求。
围绕“Playwright 元素级截图(locator.screenshot)在流程确认中比整页截图多提供什么诊断价值”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确元素截图对局部状态确认与失败定位的增益。
围绕“toast 提示转瞬即逝,Agent 如何捕获并验证这类临时反馈而不引入固定等待”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确注册重试断言先于触发动作的捕获模式。
围绕“页面上没有可见 file input(只有拖拽区或按钮)时,Playwright 如何用 filechooser 事”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 waitForEvent('filechooser') 的拦截式上传路径。
围绕“Playwright 的 fill 与逐键输入(pressSequentially)对带输入监听的前端组件行为差异是”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 fill 一次性设值绕过逐键事件对联想输入、格式校验组件的影响。
围绕“Playwright 的 force click 跳过可行动性检查能绕过什么、又会掩盖什么真实缺陷”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确强制点击的适用边界(如被遮挡的装饰层)与风险。
解释 getByRole 为何用可访问性语义替代 CSS/XPath 的结构依赖,包含角色名称计算机制,对比结构与语义定位在重构下的差异,并给出失效边界。
围绕“hover 才出现的菜单或提示层,Agent 应如何保证悬停后子项可点击而不移出触发区”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确悬停-断言可见-再点击的时序链。
围绕“Playwright 的 frameLocator 如何定位 iframe 内元素,跨域 iframe 会带来哪些额”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 frame 链式定位模型与跨域下注入限制。
围绕“在无限滚动列表中枚举全部条目时,Agent 如何判定『已到底』且不因去重不当漏项”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确滚动终止条件(高度稳定/条目数稳定)与条目去重键的选择。
围绕“只用键盘事件(Tab、Enter、快捷键)驱动表单流程时,Agent 需要验证什么才能确认焦点轨迹正确”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确焦点断言(toBeFocused)与快捷键触发结果的确认方法。
围绕“Playwright 的 waitForLoadState 中 domcontentloaded、load、netw”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确三状态在单页应用中的可达性差异。
围绕“Playwright 的 locator.filter(has/hasText)适合解决哪类『结构相同但内容不同』的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确按后代元素与文本内容过滤的适用场景和反例。
围绕“原生 select 用 selectOption,而自绘下拉框必须点开再选项——Agent 如何区分并分别自动化”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两类控件的判定方法与交互序列差异。
围绕“为什么在轮询或长连接页面上等待 networkidle 会卡死,Agent 应改用什么就绪信号”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确长连接导致 networkidle 永不满足的机理及替代等待(特定请求/元素出现)。
围绕“点击链接触发 window.open 新标签页时,Playwright 中 Agent 如何捕获并切换到该弹窗页面”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 popup/page 事件的等待与竞态避免。
围绕“Agent 点击『提交』后,应等待哪一类可观察证据来确认动作生效,而不是直接执行下一步”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确按动作类型(导航/请求/局部渲染)选择确认信号的决策表。
围绕“Playwright 截图的 fullPage 与视口截图在固定定位元素、懒加载内容上各有什么失真风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两类截图的渲染失真来源及对 Agent 观察的误导。
围绕“为多模态 Agent 选择观察方式时,什么任务截图优于可访问性树,什么任务反之”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确按视觉布局依赖度与 token 成本划分观察方式的判据。
围绕“元素在视口外导致交互失败时,Playwright 的 scrollIntoViewIfNeeded 与鼠标滚轮模拟滚”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确直接滚动定位与渐进滚动触发懒加载的差异。
围绕“Playwright 定位器默认穿透开放 shadow DOM,闭合 shadow root 时 Agent 的感知”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确开放/闭合 shadow root 对定位可达性的分界。
围绕“SPA 客户端路由切换不触发整页导航时,Agent 如何可靠检测『页面已经跳转完成』”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 URL 变化与目标内容渲染两步确认的判定方法。
围绕“Agent 多步流程中元素句柄因 DOM 重渲染失效(detached),为什么官方建议每次重新定位而非缓存 Ele”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确定位器惰性解析与句柄快照的差异。
围绕“为什么浏览器 Agent 的每个步骤应尽量设计为幂等,对不可幂等的操作(如下单)怎么办”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确幂等化手段与不可幂等操作的确认闸门设计。
围绕“Playwright 的 storageState 如何让 Agent 跳过重复登录,复用认证状态有哪些失效风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确状态复用的收益与 token 过期/多账户串扰风险。
围绕“什么时候应该推动在页面中注入 data-testid 并用 getByTestId,而不是继续强化语义定位”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确无语义组件(图标按钮、纯 div 列表)下 testid 的引入标准与成本。
围绕“多步浏览器流程的总超时预算应如何在各步骤间分配,避免单步耗尽预算或整体死等”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确按步骤类型分级超时与全局兜底的关系。
围绕“流程中途弹出预期外的模态框(促销、会话超时提醒)时,Agent 应设计怎样的中断检测与恢复机制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确把弹窗处理建模为可插拔的中断处理器而非线性步骤的理由。
围绕“用截图基线比对(visual diff)作为 Agent 的操作确认手段时,动态内容导致的误报应如何收敛”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确掩码/动画禁用/阈值三类降噪手段的选择。
围绕“Playwright waitForSelector 的 attached 与 visible 状态有何区别,等待『”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确四种状态语义及等待加载指示器消失的正确写法。
本题对比无语义属性遗留页面上CSS与XPath兜底定位的断裂特征。结论:长CSS层级链与XPath绝对路径都随DOM结构变化失效;XPath可利用属性/文本谓词增强局部抗性,但不支持shadow DOM穿透。给出具体场景和判断规则。
区分补丁应用、文件可见性、Git 提交和线上发布四种边界,解释隔离工作区、预检查、依赖顺序与失败后的范围化恢复。
围绕“为什么需要为 Agent 的每次工具调用、补丁与测试结果保留完整审计日志,记录哪些字段”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确审计日志支撑事后归因与合规的最小字段集。
围绕“长任务中 Agent 执行到一半被预算或超时打断,应如何设计检查点以便从中断处恢复”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确状态快照应包含的上下文、文件系统状态与已执行步骤。
围绕已知错误码与模糊业务描述比较文本搜索和语义召回,解释搜索范围、索引新鲜度、符号关系以及修改前重新读取原文件。
讲解编码 Agent 在上下文窗口有限时,如何对当前文件、测试、接口定义、历史 diff 等分层分配预算,含压缩取舍机制、具体场景与失效边界。
围绕“Agent 在“再跑一次全量测试”和“只跑失败用例”之间应如何做成本感知的选择”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确信息增益与执行成本的权衡判据。
围绕“当 Agent 为修复 bug 引入新依赖而与现有锁文件冲突时,应遵循什么决策顺序”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确先尝试不增依赖、再收紧版本、最后才升级的决策层级。
围绕“如何用声明式的环境定义保证 Agent 的构建与测试在任何机器上可复现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确锁定基础镜像、依赖版本与系统工具链的可复现三要素。
比较四种编辑方式依赖的定位证据,解释重复片段、行号漂移、补丁上下文、整文件遗漏,以及失败后重新读取和小范围恢复。
围绕“为什么 Agent 的每次任务执行环境应当是临时的、用完即销毁的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确状态残留导致的跨任务污染与不可复现问题。