2.5 KiB
2.5 KiB
name, description, triggers
| name | description | triggers | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| browser-automation | Browser automation testing skill using Playwright + CDP. Provides L1 screenshot verification, L2 functional testing, and L3 E2E regression testing. Always uses Playwright's Chromium (not Snap) for stability. Supports semantic element定位 via Accessibility Tree / data-testid / text / CSS fallback. |
|
Browser Automation Skill
基于 Playwright + CDP 的浏览器自动化测试能力。
核心原则
- 永远用 Playwright 的 Chromium,不用 Snap 版(
/snap/bin/chromium)— Snap 沙箱会阻塞 CDP 连接导致挂起 - 元素定位优先级:AX Tree 语义 > data-testid > 文本 > CSS 选择器(兜底)
- 不用图像识别定位(那是 PyAutoGUI 路线),用 DOM/AX Tree 语义定位
- 遇到 visibility 为 0 但实际存在的元素,用
page.evaluateJS 直接操作 DOM 绕过
三级测试策略
| 级别 | 场景 | 工具 | 耗时 |
|---|---|---|---|
| L1 | "截图看看效果" | Playwright 截图 | 10-30s |
| L2 | "验证某个功能" | Playwright 脚本 + 断言 | 1-2min |
| L3 | "跑完整回归" | Playwright Test + spec 文件 | 3-5min |
环境检查
# Playwright Chromium 位置(优先用较新版本)
~/.cache/ms-playwright/chromium-1208/chrome-linux64/chrome
~/.cache/ms-playwright/chromium-1140/chrome-linux/chrome
# 启动参数必须包含:--no-sandbox
脚本位置
所有测试脚本放在:
/home/ubuntu/.nanobot/workspace/tests/
不污染 ~/nanocode 项目代码。
当前可用脚本
| 脚本 | 级别 | 用途 |
|---|---|---|
test_screenshot.py |
L1 | 任意 URL 截图 |
test_navigate.py |
L1 | 基础导航验证 |
test_baidu_search.py |
L2 | 百度搜索(JS 绕过 visibility) |
test_generic_search.py |
L2 | 通用搜索测试框架 |
常见问题处理
问题:Playwright fill/click 报 "element not visible"
- 原因:某些网站(如百度)在 headless 模式下元素 CSS visibility 异常
- 解决:用
page.evaluate直接 JS 操作 DOM
问题:页面加载后空白或验证弹窗
- 原因:反爬虫机制检测到自动化浏览器
- 解决:设置真实 UA、隐藏
navigator.webdriver、添加随机延迟
问题:超时
- 先检查目标 URL 是否可达:
curl -sI URL - 检查是否有弹窗/iframe 阻塞