playwright-cli

playwright-cli

热门

自动化浏览器交互、测试网页并处理 Playwright 测试。

1.1万Star
609Fork
更新于 2026/6/10
SKILL.md
readonly只读
name
playwright-cli
description

自动化浏览器交互、测试网页并处理 Playwright 测试。

使用 playwright-cli 进行浏览器自动化

快速开始

# 打开新浏览器
playwright-cli open
# 导航到页面
playwright-cli goto https://playwright.dev
# 使用快照中的引用与页面交互
playwright-cli click e15
playwright-cli type "page.click"
playwright-cli press Enter
# 截图(较少使用,快照更常见)
playwright-cli screenshot
# 关闭浏览器
playwright-cli close

命令

核心

playwright-cli open
# 打开并立即导航
playwright-cli open https://example.com/
playwright-cli goto https://playwright.dev
playwright-cli type "搜索查询"
playwright-cli click e3
playwright-cli dblclick e7
# --submit 在填充元素后按 Enter
playwright-cli fill e5 "user@example.com"  --submit
playwright-cli drag e2 e8
# 将文件或数据拖放到元素上(从页面外部)
playwright-cli drop e4 --path=./image.png
playwright-cli drop e4 --data="text/plain=hello world"
playwright-cli hover e4
playwright-cli select e9 "option-value"
playwright-cli upload ./document.pdf
playwright-cli check e12
playwright-cli uncheck e12
playwright-cli snapshot
playwright-cli eval "document.title"
playwright-cli eval "el => el.textContent" e5
# 获取元素 id、class 或快照中不可见的任何属性
playwright-cli eval "el => el.id" e5
playwright-cli eval "el => el.getAttribute('data-testid')" e5
playwright-cli dialog-accept
playwright-cli dialog-accept "确认文本"
playwright-cli dialog-dismiss
playwright-cli resize 1920 1080
playwright-cli close

导航

playwright-cli go-back
playwright-cli go-forward
playwright-cli reload

键盘

playwright-cli press Enter
playwright-cli press ArrowDown
playwright-cli keydown Shift
playwright-cli keyup Shift

鼠标

playwright-cli mousemove 150 300
playwright-cli mousedown
playwright-cli mousedown right
playwright-cli mouseup
playwright-cli mouseup right
playwright-cli mousewheel 0 100

保存为

playwright-cli screenshot
playwright-cli screenshot e5
playwright-cli screenshot --filename=page.png
playwright-cli pdf --filename=page.pdf

标签页

playwright-cli tab-list
playwright-cli tab-new
playwright-cli tab-new https://example.com/page
playwright-cli tab-close
playwright-cli tab-close 2
playwright-cli tab-select 0

存储

playwright-cli state-save
playwright-cli state-save auth.json
playwright-cli state-load auth.json

# Cookies
playwright-cli cookie-list
playwright-cli cookie-list --domain=example.com
playwright-cli cookie-get session_id
playwright-cli cookie-set session_id abc123
playwright-cli cookie-set session_id abc123 --domain=example.com --httpOnly --secure
playwright-cli cookie-delete session_id
playwright-cli cookie-clear

# LocalStorage
playwright-cli localstorage-list
playwright-cli localstorage-get theme
playwright-cli localstorage-set theme dark
playwright-cli localstorage-delete theme
playwright-cli localstorage-clear

# SessionStorage
playwright-cli sessionstorage-list
playwright-cli sessionstorage-get step
playwright-cli sessionstorage-set step 3
playwright-cli sessionstorage-delete step
playwright-cli sessionstorage-clear

网络

playwright-cli route "**/*.jpg" --status=404
playwright-cli route "https://api.example.com/**" --body='{"mock": true}'
playwright-cli route-list
playwright-cli unroute "**/*.jpg"
playwright-cli unroute

开发者工具

playwright-cli console
playwright-cli console warning
playwright-cli requests
playwright-cli request 5
playwright-cli run-code "async page => await page.context().grantPermissions(['geolocation'])"
playwright-cli run-code --filename=script.js
playwright-cli tracing-start
playwright-cli tracing-stop
playwright-cli video-start video.webm
playwright-cli video-chapter "章节标题" --description="详情" --duration=2000
playwright-cli video-stop

# 为每个后续操作(click, type, ...)添加标注,命名操作并高亮目标
playwright-cli video-show-actions --duration=600 --position=top-right
playwright-cli video-hide-actions

# 启动仪表板进行 UI 审查/设计反馈 — 用户标注页面,您收到带标注的截图、快照和备注
playwright-cli show --annotate

# 根据元素的引用或选择器生成 Playwright 定位器
playwright-cli generate-locator e5 --raw

# 为元素显示持久高亮覆盖层,可选自定义样式
playwright-cli highlight e5
playwright-cli highlight e5 --style="outline: 3px dashed red"
# 隐藏单个元素高亮,或未指定目标时隐藏所有页面高亮
playwright-cli highlight e5 --hide
playwright-cli highlight --hide

原始输出

全局 --raw 选项从输出中移除页面状态、生成的代码和快照部分,仅返回结果值。用于将命令输出传递给其他工具。不产生输出的命令不返回任何内容。

playwright-cli --raw eval "JSON.stringify(performance.timing)" | jq '.loadEventEnd - .navigationStart'
playwright-cli --raw eval "JSON.stringify([...document.querySelectorAll('a')].map(a => a.href))" > links.json
playwright-cli --raw snapshot > before.yml
playwright-cli click e5
playwright-cli --raw snapshot > after.yml
diff before.yml after.yml
TOKEN=$(playwright-cli --raw cookie-get session_id)
playwright-cli --raw localstorage-get theme

如需将每次回复包装为 JSON 的结构化输出,请传递 --json

playwright-cli list --json

打开参数

# 创建会话时使用特定浏览器
playwright-cli open --browser=chrome
playwright-cli open --browser=firefox
playwright-cli open --browser=webkit
playwright-cli open --browser=msedge

# 使用持久配置文件(默认配置文件在内存中)
playwright-cli open --persistent
# 使用自定义目录的持久配置文件
playwright-cli open --profile=/path/to/profile

# 通过 Playwright 扩展连接到浏览器
playwright-cli attach --extension=chrome

# 通过通道名称连接到正在运行的 Chrome 或 Edge
playwright-cli attach --cdp=chrome
playwright-cli attach --cdp=msedge

# 通过 CDP 端点连接到正在运行的浏览器
playwright-cli attach --cdp=http://localhost:9222

# 使用配置文件启动
playwright-cli open --config=my-config.json

# 关闭浏览器
playwright-cli close
# 从附加的浏览器分离(保持外部浏览器运行)
playwright-cli -s=msedge detach
# 删除默认会话的用户数据
playwright-cli delete-data

Windows 上包含 & 的 URL

在 Windows 上,cmd.exe 和 PowerShell 将 & 视为命令分隔符,因此带有多个查询参数的 URL 会在 playwright-cli 运行前被截断。在 cmd.exe 中使用 ^& 转义 &,或在 PowerShell 中使用 --%

playwright-cli goto "https://example.com/?a=1^&b=2"
playwright-cli --% goto "https://example.com/?a=1&b=2"

快照

每个命令后,playwright-cli 提供当前浏览器状态的快照。

> playwright-cli goto https://example.com
### 页面
- 页面 URL: https://example.com/
- 页面标题: Example Domain
### 快照
[快照](.playwright-cli/page-2026-02-14T19-22-42-679Z.yml)

您也可以使用 playwright-cli snapshot 命令按需拍摄快照。以下所有选项可根据需要组合。

# 默认 - 保存到以时间戳命名的文件
playwright-cli snapshot

# 保存到文件,当快照是工作流结果的一部分时使用
playwright-cli snapshot --filename=after-click.yaml

# 拍摄元素快照而非整个页面
playwright-cli snapshot "#main"

# 限制快照深度以提高效率,之后拍摄部分快照
playwright-cli snapshot --depth=4
playwright-cli snapshot e34

# 包含每个元素的边界框为 [box=x,y,width,height]
playwright-cli snapshot --boxes

定位元素

默认使用快照中的引用来与页面元素交互。

# 获取带引用的快照
playwright-cli snapshot

# 使用引用交互
playwright-cli click e15

您也可以使用 CSS 选择器或 Playwright 定位器。

# CSS 选择器
playwright-cli click "#main > button.submit"

# 角色定位器
playwright-cli click "getByRole('button', { name: 'Submit' })"

# 测试 ID
playwright-cli click "getByTestId('submit-button')"

浏览器会话

# 创建名为 "mysession" 的新浏览器会话,使用持久配置文件
playwright-cli -s=mysession open example.com --persistent
# 相同,但手动指定配置文件目录(当明确要求时使用)
playwright-cli -s=mysession open example.com --profile=/path/to/profile
playwright-cli -s=mysession click e6
playwright-cli -s=mysession close  # 停止命名浏览器
playwright-cli -s=mysession delete-data  # 删除持久会话的用户数据

playwright-cli list
# 关闭所有浏览器
playwright-cli close-all
# 强制终止所有浏览器进程
playwright-cli kill-all

安装

如果全局 playwright-cli 命令不可用,请通过 npx playwright-cli 尝试本地版本:

npx --no-install playwright-cli --version

当本地版本可用时,在所有命令中使用 npx playwright-cli。否则,将 playwright-cli 安装为全局命令:

npm install -g @playwright/cli@latest

示例:表单提交

playwright-cli open https://example.com/form
playwright-cli snapshot

playwright-cli fill e1 "user@example.com"
playwright-cli fill e2 "password123"
playwright-cli click e3
playwright-cli snapshot
playwright-cli close

示例:多标签页工作流

playwright-cli open https://example.com
playwright-cli tab-new https://example.com/other
playwright-cli tab-list
playwright-cli tab-select 0
playwright-cli snapshot
playwright-cli close

示例:使用开发者工具调试

playwright-cli open https://example.com
playwright-cli click e4
playwright-cli fill e7 "test"
playwright-cli console
playwright-cli requests
playwright-cli close
playwright-cli open https://example.com
playwright-cli tracing-start
playwright-cli click e4
playwright-cli fill e7 "test"
playwright-cli tracing-stop
playwright-cli close

示例:交互式会话

请求用户进行 UI 审查或设计反馈。用户在实时页面上绘制框并输入评论;您收到带标注的截图、标记区域的快照以及用户的备注。当用户要求“UI 审查”、“设计反馈”或“询问用户想法/需求/意图”时使用:

playwright-cli open https://example.com
playwright-cli show --annotate

特定任务