名称: playwriter
描述: 通过 Playwriter(remorses)使用持久化 Chrome 会话和完整的 Playwright Page API 进行浏览器自动化。
hats: [developer, qa_tester]
使用 Playwriter 在本地 Chrome 会话中运行 Playwright Page 脚本。这可以保留登录状态、Cookie 和扩展程序,非常适合测试 Web 仪表板和需要身份验证的流程。
bash
npm i -g playwriterbash
playwriter session newbash
playwriter session listbash
playwriter -s <会话ID> -e "await page.goto('https://example.com')"在 -e 参数内,以下对象在作用域中可用:
- page (Playwright Page)
- context (BrowserContext)
- state (同一会话中跨调用持久存在的对象)
- require (用于加载辅助模块)
状态持久化示例:
playwriter -s <会话ID> -e "state.lastUrl = page.url()"
playwriter -s <会话ID> -e "console.log(state.lastUrl)"
playwriter -s <会话ID> -e "await page.goto('http://localhost:3000'); await page.getByRole('button', { name: '运行' }).click();"
playwriter -s <会话ID> -e "await page.getByLabel('邮箱').fill('qa@example.com'); await page.getByLabel('密码').fill('secret'); await page.getByRole('button', { name: '登录' }).click();"
playwriter -s <会话ID> -e "const { screenshotWithAccessibilityLabels } = require('playwriter'); await screenshotWithAccessibilityLabels(page, { path: '/tmp/a11y.png' });"
playwriter -s <会话ID> -e "await page.route('**/api/**', async route => { const res = await route.fetch(); const body = await res.json(); await route.fulfill({ json: { ...body, injected: true } }); });"
playwriter -s <会话ID> -e "const text = await page.locator('main').innerText(); console.log(text);"
getByRole 和 getByLabel 来获取稳定的选择器。state 上。