当前位置: 首页 > article >正文

Playwright CLI 使用指南 —— 现代浏览器自动化利器

Playwright CLI 使用指南 —— 现代浏览器自动化利器Playwright CLI 是微软推出的命令行浏览器自动化工具专为现代编码代理Coding Agents优化。它通过简洁的 CLI 命令暴露浏览器工作流相比 MCP 协议更加 Token 高效是开发调试、自动化测试、数据采集的利器。一、项目简介GitHub 仓库microsoft/playwright-cliPlaywright CLI 基于 Playwright 框架提供了一套完整的浏览器自动化命令行接口。其核心设计哲学是CLI 优先所有操作通过命令行完成适合与 AI 代理、脚本管道集成Snapshot 驱动通过页面快照获取元素引用ref无需手写选择器代码自动生成每次操作自动输出对应的 Playwright TypeScript 代码Token 高效避免将大型工具模式和冗长的可访问性树加载到模型上下文中二、安装方式环境要求项目要求Node.js18 或更高版本包管理器npm / npx编码代理可选Claude Code、GitHub Copilot 等全局安装推荐npminstall-gplaywright/clilatest playwright-cli--help本地使用无需安装npx --no-install playwright-cli--version# 之后所有命令用 npx playwright-cli 代替 playwright-cli安装 Skills编码代理集成playwright-cliinstall--skills安装浏览器引擎npx playwrightinstall三、浏览器支持浏览器命令参数说明Chromium默认--browserchromium最稳定推荐日常使用Chrome--browserchrome需系统安装 ChromeMicrosoft Edge--browsermsedge需系统安装 EdgeFirefox--browserfirefox独立引擎适合跨浏览器测试WebKit--browserwebkitSafari 内核适合 macOS/iOS 兼容性测试# 使用 Firefox 打开playwright-cliopen--browserfirefox https://example.com# 使用 Edge 打开playwright-cliopen--browsermsedge https://example.com四、运行模式无头模式默认浏览器在后台运行不显示界面适合服务器环境和 CI/CD。playwright-cliopenhttps://example.com有头模式–headed显示真实浏览器窗口适合调试和演示。playwright-cliopenhttps://example.com--headed持久化模式–persistent默认情况下浏览器配置文件保存在内存中关闭即销毁。使用--persistent将配置持久化到磁盘。# 自动持久化到默认位置playwright-cliopenhttps://example.com--persistent# 指定自定义配置目录playwright-cliopenhttps://example.com--profile/path/to/profile组合使用playwright-cliopenhttps://example.com--headed--persistent五、核心命令详解5.1 浏览器控制playwright-cliopen[url]# 打开浏览器可选导航到 URLplaywright-cli close# 关闭当前浏览器playwright-cli close-all# 关闭所有浏览器playwright-cli kill-all# 强制终止所有浏览器进程playwright-cli delete-data# 删除用户数据playwright-cli list# 列出所有会话5.2 页面导航playwright-cli gotourl# 导航到 URLplaywright-cli go-back# 后退playwright-cli go-forward# 前进playwright-cli reload# 刷新页面5.3 元素交互playwright-cli snapshot# 获取页面快照获取元素引用playwright-cli clickref# 点击元素playwright-cli dblclickref# 双击元素playwright-cli fillreftext# 填充文本playwright-cli fill e5usermail.com--submit# 填充并提交playwright-clitypetext# 逐字符输入playwright-cli hoverref# 悬停playwright-cliselectrefvalue# 下拉选择playwright-cli checkref# 勾选复选框playwright-cli uncheckref# 取消勾选playwright-cli dragref1ref2# 拖拽playwright-cli uploadfile# 上传文件5.4 元素定位方式Playwright CLI 支持三种元素定位方式# 1. 通过 Snapshot 中的 ref推荐playwright-cli snapshot# 获取 e1, e2, e3... 引用playwright-cli click e15# 2. CSS 选择器playwright-cli click#main button.submit# 3. Playwright Locatorplaywright-cli clickgetByRole(button, { name: Submit })playwright-cli clickgetByTestId(submit-button)5.5 JavaScript 执行# 执行 JS 表达式playwright-clievaldocument.title# 对元素执行 JSplaywright-clievalel el.textContente5 playwright-clievalel el.ide55.6 键盘操作playwright-cli press Enter# 按键playwright-cli press ArrowDown playwright-cli keydown Shift# 按住playwright-cli keyup Shift# 释放5.7 鼠标操作playwright-cli mousemove150300# 移动到坐标playwright-cli mousedown# 按下支持 left/right/middleplaywright-cli mouseup# 释放playwright-cli mousewheel0100# 滚轮5.8 截图与 PDFplaywright-cli screenshot# 截取视口playwright-cli screenshot e5# 截取元素playwright-cli screenshot--filenamepage.png# 保存到文件playwright-cli pdf--filenamepage.pdf# 导出 PDF六、标签页管理playwright-cli tab-list# 列出所有标签页playwright-cli tab-new# 新建标签页playwright-cli tab-new https://example.com/page# 在新标签页打开 URLplaywright-cli tab-close# 关闭当前标签页playwright-cli tab-close2# 关闭指定索引标签页playwright-cli tab-select0# 切换到指定标签页七、存储管理Cookie 操作playwright-cli cookie-list# 列出所有 Cookieplaywright-cli cookie-list--domainexample.com# 按域名筛选playwright-cli cookie-get session_id# 获取指定 Cookieplaywright-cli cookie-set session_id abc123# 设置 Cookieplaywright-cli cookie-set session_id abc123--domainexample.com--httpOnly--secureplaywright-cli cookie-delete session_id# 删除 Cookieplaywright-cli cookie-clear# 清除所有 CookieLocalStorage / SessionStorageplaywright-cli localstorage-list playwright-cli localstorage-get theme playwright-cli localstorage-set theme dark playwright-cli localstorage-delete theme playwright-cli localstorage-clear playwright-cli sessionstorage-list playwright-cli sessionstorage-get step playwright-cli sessionstorage-set step3playwright-cli sessionstorage-delete step playwright-cli sessionstorage-clear状态保存与加载playwright-cli state-save auth.json# 保存完整存储状态playwright-cli state-load auth.json# 加载存储状态八、网络请求拦截Mock基础 Mock# 模拟 404playwright-cli route**/*.jpg--status404# 返回 JSONplaywright-cli routehttps://api.example.com/**--body{mock: true}--content-typeapplication/json# 添加自定义 Headerplaywright-cli route**/api/data--body{ok:true}--headerX-Custom: value# 移除请求头playwright-cli route**/*--remove-headercookie,authorization# 管理路由playwright-cli route-list playwright-cli unroute**/*.jpgplaywright-cli unroute# 移除所有路由高级 Mock通过 run-code# 条件响应playwright-cli run-codeasync page { await page.route(**/api/login, route { const body route.request().postDataJSON(); if (body.username admin) { route.fulfill({ body: JSON.stringify({ token: mock-token }) }); } else { route.fulfill({ status: 401, body: JSON.stringify({ error: Invalid }) }); } }); }# 模拟网络故障playwright-cli run-codeasync page { await page.route(**/api/offline, route route.abort(internetdisconnected)); }# 延迟响应playwright-cli run-codeasync page { await page.route(**/api/slow, async route { await new Promise(r setTimeout(r, 3000)); route.fulfill({ body: JSON.stringify({ data: loaded }) }); }); }九、调试与性能分析控制台与网络playwright-cli console# 查看控制台消息playwright-cli console warning# 仅查看警告playwright-cli network# 查看网络请求追踪Tracingplaywright-cli tracing-start# 开始追踪# ... 执行操作 ...playwright-cli tracing-stop# 停止并保存追踪文件视频录制playwright-cli video-start video.webm# 开始录制playwright-cli video-chapterChapter--descriptionDetails--duration2000# 添加章节标记playwright-cli video-stop# 停止录制十、会话管理命名会话每个会话拥有独立的 Cookie、Storage、缓存和历史记录。# 创建命名会话playwright-cli-sauthopenhttps://app.example.com/login playwright-cli-spublicopenhttps://example.com# 操作指定会话playwright-cli-sauth fill e1userexample.complaywright-cli-spublic snapshot# 列出所有会话playwright-cli list环境变量exportPLAYWRIGHT_CLI_SESSIONmysessionplaywright-cliopenexample.com# 自动使用 mysession十一、–raw 模式管道输出--raw选项剥离页面状态、生成代码和快照部分只返回结果值方便管道处理。# 提取页面标题耗时playwright-cli--rawevalJSON.stringify(performance.timing)|jq.loadEventEnd - .navigationStart# 导出所有链接playwright-cli--rawevalJSON.stringify([...document.querySelectorAll(a)].map(a a.href))links.json# 快照对比playwright-cli--rawsnapshotbefore.yml playwright-cli click e5 playwright-cli--rawsnapshotafter.ymldiffbefore.yml after.yml十二、配置文件默认配置路径.playwright/cli.config.json{browser:{browserName:chromium,isolated:true,launchOptions:{headless:true},contextOptions:{}},outputDir:.playwright-cli,console:{level:info},timeouts:{action:5000,navigation:60000},testIdAttribute:data-testid}使用配置文件playwright-cliopen--configmy-config.json十三、使用场景总结场景说明Web 自动化测试自动生成 Playwright 测试代码交互式探索后一键生成调试 Playwright 测试通过--debugcli暂停测试用 CLI 探索页面状态数据采集/爬虫多会话并发采集支持 Cookie/Storage 管理API Mock 测试前后端联调时拦截和模拟 API 响应AI 编码代理集成为 Claude Code、GitHub Copilot 等代理提供浏览器操作能力UI 截图/录制批量截图、PDF 导出、视频录制A/B 测试多会话对比不同变体的用户体验十四、实用示例表单提交playwright-cliopenhttps://example.com/form playwright-cli snapshot playwright-cli fill e1userexample.complaywright-cli fill e2password123playwright-cli click e3 playwright-cli close多标签页工作流playwright-cliopenhttps://example.com playwright-cli tab-new https://example.com/other playwright-cli tab-list playwright-cli tab-select0playwright-cli snapshot playwright-cli close并发抓取playwright-cli-ssite1openhttps://site1.complaywright-cli-ssite2openhttps://site2.complaywright-cli-ssite3openhttps://site3.comwaitplaywright-cli-ssite1 snapshot playwright-cli-ssite2 snapshot playwright-cli-ssite3 snapshot playwright-cli close-all十五、最佳实践使用语义化会话名-sgithub-auth优于-ss1用完即关闭养成playwright-cli close的习惯避免资源泄漏先 snapshot 再操作理解页面结构后再进行交互定期清理数据使用delete-data释放磁盘空间优先使用 ref 定位比 CSS 选择器更稳定善用 --raw 模式管道输出与其他工具协作参考资料GitHub 仓库https://github.com/microsoft/playwright-cliPlaywright 官方文档https://playwright.devnpm 包https://www.npmjs.com/package/playwright/cli本文使用playwright-cli --headed --persistent模式访问 GitHub 官方仓库结合官方文档和 Skill 文档整理而成。

相关文章:

Playwright CLI 使用指南 —— 现代浏览器自动化利器

Playwright CLI 使用指南 —— 现代浏览器自动化利器 Playwright CLI 是微软推出的命令行浏览器自动化工具,专为现代编码代理(Coding Agents)优化。它通过简洁的 CLI 命令暴露浏览器工作流,相比 MCP 协议更加 Token 高效&#xff…...

Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接劣

一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...

5个关键技巧:用InteractiveHtmlBom提升PCB设计效率300%

5个关键技巧:用InteractiveHtmlBom提升PCB设计效率300% 【免费下载链接】InteractiveHtmlBom Interactive HTML BOM generation plugin for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designer 项目地址: https://gitcode.com/gh_mirrors/in/Interactive…...

基于cruise的仿真模型搭建及效果分析:丰田氢能源车型在wltc工况下的跟随优势

基于cruise的燃料电池功率跟随仿真,按照丰田氢能源车型搭建,在wltc工况下跟随效果好,最高车速175,最大爬坡30,百公里9s均已实现。 1.模型通过cruise/simulink联合仿真,策略通过MATLAB/Simulink搭建的多点恒…...

全新RCLAMP3324T.TCT TVS二极管 Semtech 电子元器件 原装正品IC

Semtech推出的RCLAMP3324T.TCT 是由Semtech公司生产的一款高性能、低电容的四线ESD(静电放电)保护器件,它采用RailClamp专利架构,在超紧凑的SLP1710P4T封装内,实现了0.4pF超低电容与25kV接触/30kV空气放电顶级防护的完…...

终极指南:如何用Mousecape轻松定制你的macOS鼠标光标

终极指南:如何用Mousecape轻松定制你的macOS鼠标光标 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 你是否厌倦了macOS千篇一律的白色箭头光标?是否希望在工作时拥有更有个性、更醒…...

AI 时代:祛魅、适应与重新定义肝

指令替换 项目需求:将加法指令替换为减法 项目目录如下 /MyProject ├── CMakeLists.txt # CMake 配置文件 ├── build/ #构建目录 │ └── test.c #测试编译代码 └── mypass2.cpp # pass 项目代码 一,测试代码示例 test.c // test.c #includ…...

AI开发-python-langchain框架(--自定义Tool )硕

起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

探索DebToIPA核心技术:解密.deb到.ipa的架构突破与移动应用格式革命

探索DebToIPA核心技术:解密.deb到.ipa的架构突破与移动应用格式革命 【免费下载链接】DebToIPA Convert .deb apps to .ipa files, on iOS, locally 项目地址: https://gitcode.com/gh_mirrors/de/DebToIPA 在移动应用生态系统的技术演进中,跨平台…...

如何用Obsidian Projects解决碎片化知识管理难题:从笔记到项目的一站式解决方案

如何用Obsidian Projects解决碎片化知识管理难题:从笔记到项目的一站式解决方案 【免费下载链接】obsidian-projects Plain text project planning in Obsidian 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-projects 你是否经常在Obsidian中积累了…...

深入解析Unity粒子系统Renderer模块:从基础渲染到高级光照控制

1. 粒子系统Renderer模块的核心作用 第一次接触Unity粒子系统时,我被Renderer模块里密密麻麻的参数吓到了。直到做了个烟花特效项目才发现,这个看似复杂的模块其实是让粒子"活起来"的关键。简单来说,它就像化妆师,决定…...

ETM vs. Abstract Model: Key Differences and Practical Applications in Hierarchical Design

1. ETM与Abstract Model基础概念解析 在芯片设计领域,随着设计规模越来越大,分层设计流程(hierarchy flow)已经成为主流方法。这种自底向上(bottom-up)的设计方式,先从模块级(block …...

【深度解析】Python异步编程:为何‘async with’必须安居于async函数之内?

1. 从报错案例看异步编程的门槛 那天我正在用aiohttp写一个简单的网络爬虫,代码看起来非常简洁: import aiohttpasync with aiohttp.ClientSession() as session:async with session.get(http://example.com) as response:print(await response.text())运…...

EcomGPT电商大模型效果展示:AI将‘V领收腰显瘦’转化为英文SEO友好描述

EcomGPT电商大模型效果展示:AI将‘V领收腰显瘦’转化为英文SEO友好描述 你是否曾为将一件“V领收腰显瘦”的连衣裙,翻译成能让海外消费者一眼心动、同时符合亚马逊搜索习惯的英文标题而头疼?传统的直译往往生硬,丢失了营销的灵魂…...

宝塔面板开机自启踩坑记:从手动重启到Systemd自动化,我总结了这几点经验

宝塔面板开机自启踩坑记:从手动重启到Systemd自动化实战指南 作为一名独立开发者,我永远忘不了那个凌晨三点被客户电话吵醒的夜晚——服务器意外重启后,宝塔面板没有自动恢复运行,导致所有网站服务瘫痪。这次惨痛经历让我下定决心…...

Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接匚

一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...

douyin-downloader:抖音视频批量下载的终极技术指南与实战教程

douyin-downloader:抖音视频批量下载的终极技术指南与实战教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallba…...

AlienFX Tools:彻底掌控你的Alienware设备,告别臃肿原厂软件

AlienFX Tools:彻底掌控你的Alienware设备,告别臃肿原厂软件 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否对Alienware…...

Tiktokenizer:如何让AI的“语言思维“变得可视化?

Tiktokenizer:如何让AI的"语言思维"变得可视化? 【免费下载链接】tiktokenizer Online playground for OpenAPI tokenizers 项目地址: https://gitcode.com/gh_mirrors/ti/tiktokenizer "当AI模型阅读你的文字时,它究竟…...

抖音直播间弹幕实时采集完整指南:快速搭建专业级数据监控系统

抖音直播间弹幕实时采集完整指南:快速搭建专业级数据监控系统 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想要在5分钟…...

如何用GetQzonehistory一键备份QQ空间?终极数据保存指南

如何用GetQzonehistory一键备份QQ空间?终极数据保存指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否担心QQ空间里那些珍贵的青春记忆会随着时间流逝而消失&#x…...

粉紫系超人气月兔铃仙识

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

让 AI 代理拥有“专业技能包“:Microsoft Agent Skills中

一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...

我好像会被 Agent 淘汰,我用数据算了一算遮

OCP原则 ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则(DIP) 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程, 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

【笔试真题】- 携程-2026.04.12

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围在线刷题 bishipass.com 携程-2026.04.12 题目一:双仓配货 1️⃣:固定构造 4 和 2n-4 即可。 2️⃣:关键结论是所有不小于 4 的偶数都是合数。 难度:Low 题目二:灯带调色窗口 1️⃣…...

长芯微LD1220完全P2P替代ADS1220,是一款精密、低功耗、兼容 SPI 接口、24 位 ΔΣ ADC

描述LD1220 是一款精密、低功耗、兼容 SPI 接口、24 位 ΔΣ ADC,其内部集成了一个低噪声可编程增益放大器 (PGA)、 两个可编程输出电流源 (IDAC)、一个电压基准、一个振荡器、一个低侧开关和一个精密温度传感器。 这些特性使得 LD1220 适用于测量微弱信号&#xff…...

ComfyUI-Easy-Use:终极指南,轻松掌握AI图像生成工作流

ComfyUI-Easy-Use:终极指南,轻松掌握AI图像生成工作流 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: https://gitcod…...

Qwen3-14B私有部署镜像实战:LSTM时间序列预测模型辅助分析

Qwen3-14B私有部署镜像实战:LSTM时间序列预测模型辅助分析 1. 场景痛点:当预测模型遇上业务决策 金融分析师小王最近很苦恼。他花了三周时间搭建了一个LSTM模型来预测下季度销售额,模型输出了漂亮的预测曲线和一堆数字。但当他把这些结果直…...

LeetCode Hot 100 - 53. 最大子数组和(经典动态规划)

难度:中等 | 面试频率:⭐⭐⭐⭐⭐ 📝 题目描述 给你一个整数数组 nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例…...

开源大模型部署指南:像素剧本圣殿镜像免配置快速上手(Dual-GPU优化)

开源大模型部署指南:像素剧本圣殿镜像免配置快速上手(Dual-GPU优化) 1. 项目概述 像素剧本圣殿(Pixel Script Temple)是一款基于Qwen2.5-14B-Instruct大模型深度微调的专业剧本创作工具。这款工具将强大的AI推理能力…...