使用 webcli 无头浏览器浏览网页、读取页面内容、点击按钮、填写表单、截取屏幕截图并获取可访问性快照。
webcli — 无头浏览器 CLI. 您可以通过webcli 命令访问无头浏览器
功能概述
webcli — 无头浏览器 CLI. 您可以通过webcli 命令访问无头浏览器是一项面向实际任务的技能,主要用于使用它来浏览网站、 阅读内容、 与元素互动、 获取截图和获取访问权限。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
webcli — 无头浏览器命令行工具
您可通过 webcli 命令访问一个无头浏览器。使用它可导航网站、读取页面内容、与元素交互、截取屏幕截图,以及获取可访问性快照。
前提条件
npm install -g @erdinccurebal/webcli npx playwright install chromium
项目主页:https://webcli.erdinc.curebal.dev/ 代码仓库:https://github.com/erdinccurebal/webcli
命令参考
导航
webcli go# 导航至指定 URL(自动启动守护进程) webcli go -w networkidle # 等待网络请求完成 webcli go -t mytab # 在指定名称的标签页中打开 webcli back # 返回上一页 webcli forward # 前进到下一页 webcli reload # 重新加载当前页面
读取页面内容
webcli source # 获取页面全部可见文本 webcli links # 列出所有链接(文本 + href) webcli forms # 列出所有表单及其输入字段 webcli html# 获取指定元素的 innerHTML webcli attr # 获取指定元素的属性值 webcli eval " " # 执行 JavaScript 并返回结果 webcli title # 获取页面标题 webcli url # 获取当前 URL webcli value # 获取 input / textarea 的值 webcli count # 统计匹配元素的数量 webcli box # 获取元素边界框(x, y, w, h) webcli styles [props..] # 获取计算后的 CSS 样式 webcli visible # 检查元素是否可见 webcli enabled # 检查元素是否启用 webcli checked # 检查复选框是否已勾选
可访问性快照(推荐 AI Agent 使用)
webcli snapshot # 获取含引用标识(@e1、@e2…)的可访问性树 webcli snapshot --all # 包含非交互式元素 webcli snapshot --max-depth 5 # 限制树的最大深度
该快照为所有交互式元素分配确定性的引用标识。可在其他命令中使用这些引用:
webcli snapshot # 获取可访问性树:[button @e1] "Submit",[textbox @e2] "Email" webcli fill @e2 "user@example.com" # 使用引用填充 webcli click @e1 # 使用引用点击
交互
webcli click "<可见文本>" # 根据可见文本点击元素 webcli click @e1 # 根据快照中的引用点击元素 webcli clicksel "" # 根据 CSS 选择器点击元素 webcli dblclick "<文本>" # 根据可见文本双击元素 webcli hover "<选择器>" # 将鼠标悬停在元素上 webcli fill "<选择器>" "<值>" # 填充输入字段(表单操作首选) webcli type "<文本>" # 键盘输入(仅对已聚焦元素有效) webcli select "<选择器>" "<值>" # 选择下拉菜单选项 webcli press Enter # 按下键盘按键(Enter、Tab、Escape 等) webcli focus "<选择器>" # 聚焦到指定元素 webcli check "<选择器>" # 勾选复选框 webcli uncheck "<选择器>" # 取消勾选复选框 webcli drag "<起始位置>" "<目标位置>" # 在两个选择器之间执行拖放操作 webcli upload "<选择器>" <文件路径> # 向 input[type=file] 元素上传文件 webcli scroll down 500 # 页面滚动(up/down/left/right,单位:像素)
等待
webcli wait "<选择器>" # 等待 CSS 选择器对应的元素变为可见 webcli waitfor "<文本>" # 等待指定文本出现在页面上 webcli sleep 2000 # 暂停 N 毫秒
截图与 PDF
webcli screenshot # 截取整页截图(返回保存路径) webcli screenshot -o page.png # 保存为指定文件名 webcli screenshot --no-full # 仅截取视口区域(viewport-only) webcli screenshot --annotate # 截图并标注编号的交互式元素 webcli pdf # 将当前页面保存为 PDF webcli pdf -o page.pdf # 将 PDF 保存为指定文件名
控制台与错误
webcli console on # 开始捕获控制台日志 webcli console off # 停止捕获 webcli console # 显示已捕获的控制台消息 webcli errors # 显示页面错误
对话框处理
webcli dialog accept # 接受 alert / confirm 对话框 webcli dialog accept "输入文本" # 向 prompt 对话框输入文本并确认 webcli dialog dismiss # 取消/关闭对话框
框架(iframe)切换
webcli frame "<选择器>" # 切换至指定 iframe webcli frame main # 切换回主框架(main frame)
存储(localStorage)
webcli storage get # 获取全部 localStorage 数据 webcli storage get mykey # 获取指定键的值 webcli storage set mykey myvalue # 设置指定键的值 webcli storage clear # 清空全部 localStorage
状态管理
webcli state save session.json # 保存 cookies + localStorage + sessionStorage webcli state load session.json # 恢复完整的浏览器状态
浏览器设置
webcli viewport 1920 1080 # 修改视口尺寸 webcli useragent "<字符串>" # 修改 User-Agent 字符串 webcli device "iPhone 14" # 模拟设备(同时修改视口和 UA) webcli network on # 开始记录网络请求 webcli network off # 停止记录 webcli network # 显示网络请求日志
Cookie 管理
webcli cookie export # 将 cookies 导出为 JSON 格式 webcli cookie import <文件路径> # 从 JSON 文件导入 cookies
标签页与守护进程管理
webcli tabs # 列出当前所有打开的标签页 webcli quit # 关闭当前标签页 webcli quit -t mytab # 关闭指定名称的标签页 webcli status # 显示守护进程信息(PID、运行时长、标签页列表) webcli stop # 停止守护进程并关闭浏览器
全局选项
所有命令均支持以下选项:
-t, --tab— 指定目标标签页(默认为 "default")--json— 以结构化 JSON 格式输出结果--timeout— 设置命令超时时间(默认:30000 毫秒)
最佳实践
推荐的 AI Agent 工作流
webcli go— 导航至目标页面webcli snapshot— 获取带引用标识的可访问性树- 使用引用标识进行交互:
webcli click @e1、webcli fill @e2 "value" - 再次执行
webcli snapshot查看更新后的页面状态 - 如需视觉确认,执行
webcli screenshot
替代工作流(纯文本方式)
webcli go— 导航至目标页面webcli source— 读取页面全文本内容- 使用
webcli click、webcli fill、webcli press进行交互 - 再次执行
webcli source查看操作结果
表单填写
- 始终使用
webcli fill填充输入字段——它能正确设置 React/Vue 中受控组件(controlled inputs)的值 - 按钮点击请使用
webcli click或webcli clicksel - 提交表单建议使用
webcli press Enter - 提交后,建议先执行
webcli sleep 1000,再执行webcli source验证结果
多标签页浏览
webcli go https://site-a.com -t research webcli go https://site-b.com -t reference webcli source -t research # 读取指定标签页内容 webcli source -t reference
错误恢复
- 若命令超时,可尝试先执行
webcli sleep 2000,再重试 - 若找不到目标元素,可用
webcli source检查当前页面实际内容 - 若守护进程疑似卡死,可执行
webcli stop后重试命令 - 与动态加载的内容交互前,建议先使用
webcli wait ""
重要说明
- 在尝试任何交互操作前,请务必先用
webcli source或webcli snapshot读取页面内容 - 为获得最可靠的元素定位能力,优先使用
webcli snapshot+ 引用标识的方式 - 表单输入操作中,优先使用
webcli fill而非webcli type - 在可行的前提下,优先使用
webcli click(按可见文本)而非webcli clicksel(按 CSS 选择器) - 高频交互之间建议插入
webcli sleep,确保页面有足够时间完成更新 - 守护进程在命令间持续运行——除非页面本身发生变化,否则无需重复导航
热门AI工具
相关专题
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。
0
2026.10.22
PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.5万人学习
共6课时 | 54.7万人学习
