
最近,越来越多的测试开发开始尝试让 AI 直接操作浏览器。输入一句需求,让它打开网页、填写表单、点击按钮,看起来已经不是什么难事。
但真正放到项目里,问题很快就出现了:页面元素太多,AI 需要反复读取页面;同名按钮容易找错;页面发生变化后,之前找到的元素引用又可能失效。
Playwright CLI 提供了一种思路:先读取页面的语义结构,再通过局部检索找到目标,最后执行操作。
对于正在研究 AI 浏览器自动化的测试工程师,这套机制值得掌握。
目录
-
浏览器能操作,不代表元素能找准
-
页面定位开始从选择器走向语义理解
-
语义快照与局部检索如何配合
-
同一个登录场景,两种方式有什么区别
-
工程落地,别忽略这三个细节
-
AI 能操作页面,测试还需要做什么
一、浏览器能操作,不代表元素能找准
传统自动化测试通常提前编写定位器:
page.locator('.login-form .submit-btn').click();
这段代码依赖页面的 CSS 结构。页面改版、组件嵌套发生变化,或者出现多个匹配元素时,都可能影响脚本执行。
AI Agent 面临的情况更复杂。
当用户说"找到登录按钮并完成登录",Agent 不仅要找到按钮,还要判断哪个输入框对应账号、哪个对应密码,以及操作完成后是否真的登录成功。
如果每次都读取大量页面信息,再从中寻找目标,处理成本也会随页面复杂度增加。
因此,页面定位需要解决两个问题:找到目标元素,以及确认它在当前场景中是否正确。
二、页面定位开始从选择器走向语义理解
Playwright CLI 可以获取页面的可访问性树,并将其中的交互元素标记为可引用的节点。
例如,执行:
playwright-cli open https://example.com
playwright-cli snapshot
页面快照可能包含这样的内容:
- heading "用户登录" [level=1]
- textbox "手机号" [ref=e5]
- textbox "密码" [ref=e8]
- button "登录" [ref=e12]
相比直接面对复杂的网页源代码,这种结构更容易让 AI 理解。
它能够看到哪个节点是输入框、哪个节点是按钮,以及这些控件对应的名称。
不过,语义快照不等于完整的网页结构,也不是截图。它主要呈现页面的可访问性信息。如果前端没有正确设置控件名称,或者页面使用了复杂的自定义组件,语义信息仍然可能不足。
三、语义快照与局部检索如何配合
Playwright CLI 的相关能力可以分成三步。
1. 先看页面结构
playwright-cli snapshot
获取页面快照,了解有哪些标题、输入框、按钮和链接。
2. 再搜索目标元素
如果页面很复杂,只想找到"登录"按钮,可以使用:
playwright-cli find "登录"
CLI 会返回匹配节点及其附近的上下文,不必每次都重新读取整棵页面结构。
还可以使用正则表达式:
playwright-cli find --regex "新增|创建"
对于层级很深的页面,也可以限制快照范围:
playwright-cli snapshot --depth=4
playwright-cli snapshot "#main"
前者限制快照深度,后者只查看指定 CSS 选择器对应的区域。
需要区分的是,find 进行的是快照文本或正则匹配,不是向量检索,也不是基于语义嵌入的搜索。
3. 使用引用执行操作
假设检索结果返回:
- button "登录" [ref=e12]
就可以执行:
playwright-cli fill e5 "testuser"
playwright-cli fill e8 "testpassword"
playwright-cli click e12
整个过程不需要重新编写 CSS 选择器。
其工作流程如下:

相关命令可以参考 Playwright CLI 官方快照文档。
四、同一个登录场景,两种方式有什么区别
传统方式可能依赖具体的页面层级:
page.locator(
'.login-form > div:nth-child(2) input'
);
使用 Playwright 的语义定位器,则可以直接表达目标:
page.getByRole('button', {
name: '登录'
});
而在 CLI 的交互流程中,可以先通过快照识别元素,再使用引用操作。
三种方式并不是互相替代的关系。
-
CSS 选择器适合结构明确、定位规则稳定的场景。
-
语义定位器适合能够通过角色和名称清楚识别的控件。
-
CLI 的快照与检索适合 AI 探索页面、识别目标和执行交互。
AI 探索页面时使用元素引用,不代表正式测试脚本也应该永久依赖这些引用。
引用编号的有效范围有限,页面发生变化后可能失效。正式测试仍然应该使用可维护的定位器,并通过断言验证执行结果。
五、工程落地,别忽略这三个细节
第一,页面语义要清楚。
按钮名称、输入框标签和控件角色越规范,自动化越容易准确识别目标。测试开发可以把这些内容纳入页面质量检查。
第二,页面变化后重新获取快照。
元素引用不是永久标识。跳转页面或者交互导致页面结构变化后,应重新观察页面,再使用新的引用。
第三,操作完成后必须验证结果。
点击登录按钮成功,不等于登录成功。正式测试应该继续检查页面状态、业务提示,必要时还要验证接口返回。
对于图表、画布、拖拽控件等难以通过语义结构表达的场景,则需要结合截图和视觉定位。
六、AI 能操作页面,测试还需要做什么
Playwright CLI 降低了 AI 理解页面和执行浏览器操作的门槛,但它并没有消除自动化测试中的定位错误、业务判断错误和结果验证问题。
对于初级测试工程师,值得掌握的是快照、检索、元素引用和语义定位器之间的区别。
对于中级测试开发,更需要考虑如何将页面感知、操作执行、异常恢复和结果验证串联起来,让自动化流程能够持续维护,而不是只完成一次演示。
如果你的自动化测试项目现在接入了 AI,你遇到最多的问题是什么:元素定位不准、页面变化后脚本失效,还是操作执行成功却无法确认业务结果?