browser_action
browser_action 工具基于 Puppeteer 管控的浏览器实现网页自动化与交互能力,支持 VJSP 启动浏览器、导航至目标网站、点击页面元素、输入文本、滚动页面,并通过截图提供可视化反馈。
参数说明
本工具接收以下参数,参数约束与取值规则如下:
action(必选):待执行的操作类型,取值范围为:launch:启动新的浏览器会话并导航至指定URLclick:在页面指定的X、Y坐标位置执行点击操作type:通过键盘执行文本输入操作scroll_down:向下滚动一个页面高度scroll_up:向上滚动一个页面高度close:终止当前浏览器会话
url(可选):使用launch操作时,指定浏览器导航的目标 URLcoordinate(可选):使用click操作时,指定点击的 X、Y 坐标(示例格式:"450,300")text(可选):使用type操作时,指定待输入的文本内容
功能定位
该工具创建由 VJSP 管控的自动化浏览器会话,实现网站导航、页面元素交互,以及所有需浏览器自动化支撑的任务执行。每一步操作均会生成当前页面状态截图,支持流程的可视化校验。
适用场景
- VJSP 需与 Web 应用或网站进行交互时
- 开展用户界面(UI)或 Web 功能自动化测试时
- 捕获网页截图进行留存或分析时
- 以可视化方式演示 Web 业务流程时
核心特性
- 每步操作后生成截图并捕获控制台日志,提供可视化反馈与调试依据
- 支持从浏览器启动、页面交互到会话关闭的全流程自动化
- 支持基于坐标的精准交互、键盘输入及页面滚动操作
- 内置智能页面加载检测机制,保障浏览器会话的一致性
- 支持两种运行模式:本地模式(独立 Puppeteer 实例)、远程模式(连接已启动的 Chrome 浏览器)
- 具备优雅的错误处理能力,实现会话自动清理并输出详细错误信息
- 支持多种截图格式与画质配置,优化可视化输出效果
- 通过位置标识与操作历史记录,实现交互状态的全链路追踪
浏览器运行模式
本工具提供两种独立的运行模式,适配不同自动化场景需求:
本地浏览器模式(默认)
- 通过 Puppeteer 自动下载并管理本地 Chromium 实例
- 每次启动操作均创建全新的浏览器运行环境
- 无法访问本地现有用户配置、Cookie 及浏览器扩展程序
- 沙箱化环境下实现行为的一致性与可预测性
- 会话终止时自动完全关闭浏览器进程
远程浏览器模式
- 连接已开启远程调试功能的 Chrome/Chromium 浏览器实例
- 可访问浏览器现有运行状态、Cookie 及已安装的扩展程序
- 复用现有浏览器进程,实现启动速度的优化
- 支持连接 Docker 容器内或远程服务器上的浏览器实例
- 会话终止时仅断开连接,不关闭目标浏览器
- 依赖已开启远程调试端口的 Chrome 浏览器(默认端口:9222)
功能限制
- 浏览器会话激活期间,仅可调用
browser_action工具执行操作 - 浏览器坐标为视口相对坐标,非页面绝对坐标
- 点击操作仅支持定位到视口内的可见元素
- 切换至其他工具前,需显式关闭当前浏览器会话
- 浏览器窗口尺寸支持自定义配置(默认尺寸:900x600)
- 不支持直接与浏览器开发者工具(DevTools)进行交互
- 浏览器会话为临时状态,VJSP 重启后无法持久化
- 仅兼容 Chrome/Chromium 浏览器,暂不支持Firefox、Safari
- 本地模式无法访问现有 Cookie;远程模式依赖开启调试功能的Chrome浏览器
执行原理
browser_action工具被调用后,按以下流程执行操作:
操作校验与浏览器管理
- 对请求操作的必选参数进行合法性校验
- 执行
launch操作:初始化浏览器会话(本地 Puppeteer 实例/远程 Chrome 连接) - 执行交互类操作:复用已建立的浏览器会话
- 执行
close操作:按对应模式终止或断开浏览器连接
页面交互与稳定性保障
- 基于
waitTillHTMLStable算法实现 DOM 稳定性检测,确保页面完全加载 - 按合理的时序执行导航、点击、输入、滚动等请求操作
- 监听点击后的网络活动,必要时等待页面完成导航
- 基于
可视化反馈生成
- 优先采用 WebP 格式捕获优化后的截图(PNG 格式作为降级方案)
- 记录浏览器控制台日志,为问题调试提供依据
- 追踪鼠标位置并维护分页式的操作历史记录
会话生命周期管理
- 跨多次操作维护浏览器的运行状态
- 捕获执行过程中的错误并自动清理系统资源
- 强制约束合规的工作流执行顺序:启动 → 交互 → 关闭
工作流执行顺序
浏览器自动化交互需严格遵循以下执行顺序:
- 会话初始化:所有浏览器自动化工作流均需以
launch操作作为起始 - 交互执行阶段:可连续执行多次
click、type及滚动类操作 - 会话终止:所有浏览器自动化工作流均需以
close操作作为收尾 - 工具切换:浏览器会话关闭后,方可调用其他工具执行操作
典型应用示例
- 网页表单提交流程:VJSP 启动浏览器并导航至表单页面,通过
type操作填充各字段,执行点击操作提交表单 - 响应式网站测试:VJSP 导航至目标站点,通过滚动操作检查页面不同区域的适配效果
- Web应用截图捕获:VJSP 导航至应用不同页面,在各节点执行截图操作完成留存
- 电商结账流程演示:VJSP 模拟从商品选品到支付确认的全流程操作
调用示例
启动浏览器并导航至指定网站:
<browser_action>
<action>launch</action>
<url>https://example.com</url>
</browser_action>在指定坐标执行点击操作(如点击页面按钮):
<browser_action>
<action>click</action>
<coordinate>450,300</coordinate>
</browser_action>向已聚焦的输入框中输入文本:
<browser_action>
<action>type</action>
<text>Hello, World!</text>
</browser_action>向下滚动页面查看更多内容:
<browser_action>
<action>scroll_down</action>
</browser_action>关闭当前浏览器会话:
<browser_action>
<action>close</action>
</browser_action>