前端富文本UI组件AI 应用【免费下载链接】BlockNoteA React Rich Text Editor thats block-based (Notion style) and extensible. Built on top of Prosemirror and Tiptap.项目地址https://gitcode.com/gh_mirrors/bl/BlockNote点击查看免费下载导读本文基于 BlockNote 仓库内.claude/skills/playwright-cli技能包中的会话管理文档系统讲解playwright-cli的多浏览器会话机制如何通过-s命名会话实现 Cookie、存储、缓存等状态的完全隔离如何在并发抓取、A/B 对比、认证流程等场景中灵活调度会话如何通过attach附加到正在运行的 Chrome/Edge 实例进行调试以及如何配合持久化 profile、环境变量与会话生命周期命令构建健壮的自动化流程。读完本文你将能利用该 CLI 在同一台机器上并行运行互不干扰的多个浏览器会话并掌握会话清理、状态保存与附加调试的完整实战方案。一、会话模型每个会话是一个独立浏览器上下文playwright-cli的会话session模型非常直观每个命名会话对应一个独立的浏览器上下文会话之间完全隔离。也就是说你可以在一个进程内同时维护已登录用户会话和匿名访客会话它们各自持有独立的 Cookie、存储和缓存互不串扰。从仓库内技能包的顶层文档 SKILL.md 的 Browser Sessions 一节可以看到会话的创建、操作与销毁贯穿了整个 CLI 的常用命令流# 创建新会话 mysession 并打开页面可叠加 --persistent 持久化 playwright-cli -smysession open example.com --persistent playwright-cli -smysession click e6 playwright-cli -smysession close # 停止命名会话 playwright-cli -smysession delete-data # 删除该会话的用户数据这种以会话名为作用域的设计让同一套命令open、snapshot、click、fill等可以在不同会话之间自由复用而无需关心状态污染问题。二、命名会话用-s标志隔离浏览器上下文-s或--session标志用于指定会话名称。当不指定时所有命令默认作用于名为default的会话一旦指定命令就只作用于对应名称的会话。# 会话 1认证流程持有登录态 Cookie playwright-cli -sauth open https://app.example.com/login # 会话 2公开浏览独立的 Cookie 与存储 playwright-cli -spublic open https://example.com # 命令按会话隔离执行 playwright-cli -sauth fill e1 userexample.com playwright-cli -spublic snapshot从源码结构看-s是全局性作用域标志可出现在任何子命令之前且会话名称与底层浏览器 profile 目录一一对应——这也解释了为什么会话能被delete-data按名清理。命名会话的最大价值在于多个并行任务可以共享同一 CLI 进程却各自拥有干净的浏览器环境。三、会话隔离属性完全独立的状态边界每个浏览器会话都拥有独立的CookiesLocalStorage / SessionStorageIndexedDB缓存Cache浏览历史打开的标签页Tabs这意味着在同一会话内你打开的多个标签页共享该会话的状态而不同会话之间即使访问同一个域名彼此的登录态、存储和缓存也互不可见。这与 Playwright 浏览器上下文BrowserContext的隔离语义一致可参考同目录的 storage-state.md 文档——该文档的存储管理命令state-save/state-load、cookie-*、localstorage-*、sessionstorage-*同样以当前会话为操作对象进一步印证了会话作为状态边界的地位。四、会话生命周期命令查看、关闭、清理命令作用playwright-cli list列出所有浏览器会话playwright-cli close停止默认会话关闭浏览器playwright-cli -smysession close停止指定命名会话playwright-cli close-all停止所有会话playwright-cli kill-all强制杀死所有守护进程用于清理残留/僵尸进程playwright-cli delete-data删除默认会话的用户数据profile 目录playwright-cli -smysession delete-data删除命名会话的用户数据# 列出全部会话 playwright-cli list # 关闭默认会话 playwright-cli close # 关闭命名会话 playwright-cli -smysession close # 全部关闭 playwright-cli close-all # 强制清理残留进程 playwright-cli kill-all # 删除会话数据以释放磁盘 playwright-cli delete-data playwright-cli -smysession delete-data需要特别区分close与kill-allclose是优雅停止正常关闭浏览器kill-all则是兜底手段专门处理浏览器无响应、守护进程残留等异常场景。而delete-data用于清除会话持久化的 profile 数据——这对使用--persistent模式的会话尤其重要。五、环境变量设置默认会话名除了每次显式传-s还可以通过环境变量为整个终端会话设定默认会话名export PLAYWRIGHT_CLI_SESSIONmysession playwright-cli open example.com # 自动使用 mysession 会话设置后凡是不带-s的命令都会自动作用于该名称的会话。这在 shell 脚本中非常实用——你可以在脚本开头统一声明会话名后续命令全部省略-s参数既减少重复又避免拼写不一致导致的会话错乱。六、默认会话无-s时的行为当省略-s时命令使用默认浏览器会话名为default# 以下命令作用于同一个默认会话 playwright-cli open https://example.com playwright-cli snapshot playwright-cli close # 停止默认浏览器注意环境变量PLAYWRIGHT_CLI_SESSION会覆盖这个默认值见上一节而attach模式下还有另一套默认命名规则见第八节。七、会话配置打开时指定浏览器与运行模式在open创建会话时可以叠加多个配置项# 使用配置文件打开JSON 格式 playwright-cli open https://example.com --config.playwright/my-cli.json # 指定浏览器内核 playwright-cli open https://example.com --browserfirefox # 有头模式显示浏览器窗口 playwright-cli open https://example.com --headed # 持久化 profile默认 profile 仅存内存 playwright-cli open https://example.com --persistent从 SKILL.md 的 Open parameters 一节可知--browser支持chrome、firefox、webkit、msedge等内核--config接受自定义 JSON 配置文件的路径。这些参数组合可以在创建会话时就确定其运行环境避免后续重复调整。7.1 持久化 profilePersistent Profile默认情况下浏览器 profile 只保存在内存中——会话结束即消失这对于处理敏感操作更安全storage-state.md 的安全注意事项也强调默认会话以内存模式运行更安全。但某些场景需要跨进程保留 profile# 使用自动生成的持久化位置 playwright-cli open https://example.com --persistent # 使用自定义 profile 目录 playwright-cli open https://example.com --profile/path/to/profile--profile允许显式指定 profile 目录便于复用既有的浏览器配置扩展、书签、站点设置等也可以结合命名会话实现每个会话一套固定 profile的布局。八、附加到运行中的浏览器attach 与 detachattach与open的本质区别在于open是启动一个新浏览器而attach是连接一个已经运行的浏览器不启动新实例。这在调试 Playwright 测试时是核心机制详见下文第十一节。8.1 按 channel 名称附加Chrome / Edge通过 channel 名称连接到正在运行的 Chrome 或 Edge 实例。前提是目标浏览器开启了远程调试在目标浏览器中打开chrome://inspect/#remote-debugging勾选 Allow remote debugging for this browser instance。# 附加到 Chrome playwright-cli attach --cdpchrome # 附加到 Chrome Canary playwright-cli attach --cdpchrome-canary # 附加到 Microsoft Edge playwright-cli attach --cdpmsedge # 附加到 Edge Dev playwright-cli attach --cdpmsedge-dev支持的 channelchrome、chrome-beta、chrome-dev、chrome-canary、msedge、msedge-beta、msedge-dev、msedge-canary。会话命名规则当未提供--session时会话以 channel 名命名例如--cdpmsedge会创建名为msedge的会话这样并行附加 Chrome 和 Edge 时不会都挤在default会话上产生冲突。如需覆盖可显式传--sessionname。8.2 通过 CDP 端点附加连接任何暴露了 Chrome DevTools Protocol 端点的浏览器playwright-cli attach --cdphttp://localhost:9222这在连接远程调试端口如localhost:9222或第三方 CDP 代理时非常有用。8.3 通过浏览器扩展附加连接安装了 Playwright 扩展的浏览器playwright-cli attach --extensionSKILL.md 中还展示了带内核参数的写法playwright-cli attach --extensionchrome可用于指定目标内核。8.4 分离detachdetach用于拆除附加会话不影响外部浏览器本身浏览器继续保持运行# 分离默认的附加会话 playwright-cli detach # 分离指定附加会话 playwright-cli -smsedge detach关键限制detach只对通过attach创建的会话有效对open启动的会话必须使用close。九、常见模式把会话管理用于真实工作流9.1 并发抓取Concurrent Scraping利用命名会话的隔离性在 shell 中并行启动多个抓取任务#!/bin/bash # 并行抓取多个站点 # 启动所有浏览器 playwright-cli -ssite1 open https://site1.com playwright-cli -ssite2 open https://site2.com playwright-cli -ssite3 open https://site3.com wait # 分别抓取快照 playwright-cli -ssite1 snapshot playwright-cli -ssite2 snapshot playwright-cli -ssite3 snapshot # 清理 playwright-cli close-all由于三个会话状态互不干扰wait之后可以按会话名逐一取回结果最后用close-all一次性收尾。9.2 A/B 测试会话同时打开两个不同变体的页面进行对比# 测试不同的用户体验 playwright-cli -svariant-a open https://app.com?varianta playwright-cli -svariant-b open https://app.com?variantb # 对比截图 playwright-cli -svariant-a screenshot playwright-cli -svariant-b screenshot两个会话各自的浏览状态完全独立截图对比结果不会互相污染。9.3 持久化 profile 的典型用法# 使用自动生成的持久化位置 playwright-cli open https://example.com --persistent # 使用自定义 profile 目录 playwright-cli open https://example.com --profile/path/to/profile典型场景包括需要保留登录态跨进程复用、需要加载已安装扩展、或需要固定浏览器外观设置时。配合命名会话可以实现每个自动化任务一套专属 profile。十、最佳实践会话管理的工程化规范1. 语义化命名会话# 好目的清晰 playwright-cli -sgithub-auth open https://github.com playwright-cli -sdocs-scrape open https://docs.example.com # 避免通用无意义的名字 playwright-cli -ss1 open https://github.com2. 始终清理# 用完即关 playwright-cli -sauth close playwright-cli -sscrape close # 或一次性全部关闭 playwright-cli close-all # 浏览器无响应或残留僵尸进程时强制清理 playwright-cli kill-all3. 删除过期数据# 移除旧会话数据以释放磁盘空间 playwright-cli -soldsession delete-data这套规范与 storage-state.md 的安全建议一脉相承会话数据尤其是含认证信息的持久化 profile 与存储状态文件不应随意堆积自动化结束时应主动清理。十一、会话管理与 Playwright 测试调试的协同会话机制在仓库的测试工作流中扮演着关键角色。playwright-tests.md 展示了标准调试流程后台运行npx playwright test --debugcli等待输出 Debugging Instructions 与形如tw-abcdef的会话名然后attach到该会话进行交互式探查# 后台运行测试注意在后台执行并检查输出 PLAYWRIGHT_HTML_OPENnever npx playwright test --debugcli # ... 等待打印出 tw-abcdef 会话名 ... # 附加到测试会话进行调试 playwright-cli attach tw-abcdef而 spec-driven-testing.md 的规划 → 生成 → 修复plan → generate → heal全流程也完全建立在该机制之上每次都以 seed 测试配合--debugcli在后台启动再用playwright-cli attach tw-XXXX驱动被暂停的页面最后通过close/停止后台测试完成会话收尾。会话的隔离 可命名 可附加能力正是这些端到端工作流能稳定复用的基础。此外tracing.md 与 video-recording.md 中的录制功能同样作用于当前会话可在调试时叠加使用以留存证据。结语浏览器会话管理是playwright-cli自动化能力的基石-s命名会话提供了干净的状态隔离边界list/close/close-all/kill-all/delete-data构成了完整的生命周期管理--persistent与--profile实现了跨进程状态保留attach/detach打通了与外部浏览器及 Playwright 测试调试的衔接。将本文的命名规范、清理纪律与并发模式落实到实际自动化脚本中即可在同一环境内稳定、安全地并行运行多个互不干扰的浏览器任务。相关文档索引均为仓库内.claude/skills/playwright-cli/目录下的资料技能总览与全部命令SKILL.md会话管理本文主题session-management.md存储状态与 Cookie 管理storage-state.md运行自定义 Playwright 代码running-code.mdPlaywright 测试运行与调试playwright-tests.md规范驱动测试规划/生成/修复spec-driven-testing.md请求 Mockrequest-mocking.mdTrace 录制tracing.md视频录制video-recording.md赞分享前端富文本UI组件AI 应用【免费下载链接】BlockNoteA React Rich Text Editor thats block-based (Notion style) and extensible. Built on top of Prosemirror and Tiptap.项目地址https://gitcode.com/gh_mirrors/bl/BlockNote点击查看免费下载相关推荐Sanity 仓库中的 playwright-cli 浏览器会话管理多会话隔离、持久化 Profile 与并发自动化完整指南Sanity 仓库中的 playwright cli 浏览器会话管理多会话隔离、持久化 Profile 与并发自动化完整指南 本文以 .agents/skilCMS前端Playwright Browser Session Management 实战指南用 playwright-cli 实现多会话隔离、状态持久化与外部浏览器接管Playwright Browser Session Management 实战指南用 playwright cli 实现多会话隔离、状态持久化与外部浏览器接测试开发工具浏览器控制ZCode agent-browser 会话管理完全指南多会话隔离、状态持久化与并发浏览实战ZCode agent browser 会话管理完全指南多会话隔离、状态持久化与并发浏览实战 本篇指南聚焦 ZCode 仓库内置的 agent browser上一篇碧蓝幻想Relink DPS统计实战指南免费伤害分析工具5分钟上手下一篇桌面总是乱糟糟免费开源桌面整理工具NoFences3步让图标各归其位创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考