用途:该技能面向编写 Playwright 自动化脚本、构建需处理动态内容的网页爬虫,以及创建可维护的端到端(E2E)测试。不适用于一次性简单浏览器任务,也不用于查询 Playwright API 文档(资料建议改用 context7 MCP)。
主要能力:提供选择器策略、等待模式、数据提取、错误处理、导航、表单交互、截图与调试等实践模式。选择器优先级为面向用户的定位器(getByRole、getByLabel、getByPlaceholder、getByText)优先,其次 test ID(默认 data-testid,可在 playwright.config.ts 中通过 testIdAttribute 自定义),CSS/ID 与 XPath 作为最后手段。定位器默认严格,多个元素匹配会抛错,可通过更具体条件、filter 或链式定位解决,避免用 first()。
等待与断言:Playwright 多数操作自带自动等待,会检查元素已挂载、可见、稳定、启用且可接收事件;应使用 web-first 断言(如 await expect(locator).toBeVisible()),而非 expect(await locator.isVisible()).toBe(true)。动态内容可用 toHaveCount、toHaveText、waitForLoadState('networkidle')、waitForFunction 等。
数据提取:单元素可用 textContent、innerText、getAttribute;多元素应先断言数量再 all(),批量提取推荐 evaluateAll,需要页面全局上下文时用 evaluate。表单可用 fill、type、selectOption、check、setInputFiles;新标签页用 context.waitForEvent('page') 配合点击。
限制与注意:资料列出常见反模式,包括用 waitForTimeout 代替 web-first 断言、用 CSS 类名或 nth-child、用已弃用的 waitForNavigation、未断言数量就调用 all()、滥用 first()、不处理弹窗或 cookie 横幅、硬编码延迟、用截图做数据提取等。浏览器自动化本质异步且依赖时序,应从开始就构建韧性。具体安装命令、版本要求与配置细节暂未提供。