跳到主要内容

会话与浏览器

命名会话

默认情况下,每个命令都针对默认会话。传入 -s=<name> 可以隔离一个会话——每个命名会话都有自己独立的守护进程、WebDriver 和浏览器,因此你可以并行驱动多个会话,并随时自由切换。

命名会话

se-cli -s=alpha open https://example.com
se-cli -s=alpha snapshot
se-cli -s=alpha title
se-cli -s=alpha close

se-cli list
# alpha chrome running
# default — (none)

并行多浏览器

# 两个会话,两个浏览器
se-cli -s=chrome open https://example.com \
--browser=chrome
se-cli -s=firefox open https://example.com \
--browser=firefox

se-cli -s=chrome title
se-cli -s=firefox title

se-cli -s=chrome close
se-cli -s=firefox close

CDP 附加

# 以调试模式启动 Chrome
google-chrome --remote-debugging-port=9222

# 附加到正在运行的浏览器
se-cli open --cdp=http://localhost:9222
se-cli snapshot
se-cli screenshot --filename=debug.png
se-cli close

持久化配置文件

使用 --profile--persistent(v0.2)可以在多次运行之间保留 cookie、localStorage 和登录状态。这对于只登录一次并复用会话的认证工作流至关重要。

标志描述示例
--profile=<path>持久化用户数据目录——复用真实的浏览器配置文件--profile=/tmp/se-profile
--persistent自动分配一个 userDataDir,使状态自动保留se-cli open --persistent
--browser=chrome|edge|firefox按会话选择浏览器--browser=firefox
--headed显示浏览器窗口(默认:无头模式)se-cli open --headed
信息

与 state-save 结合使用。 对于跨机器的可移植性,优先使用 state-save 而不是配置文件——JSON 是可移植的,而 userDataDir 不是。

守护进程生命周期

守护进程在第一次 open 时启动,并在多次 CLI 调用之间持续存在。它持有 WebDriver 实例、快照树和引用注册表。三种机制让它保持健康并回收资源。

selfDestructOnIdle

在没有请求的情况下,30 分钟后自动销毁(可配置)。防止代理离开时孤立守护进程造成内存泄漏。

heartbeat

驱动会定期调用 getTitle() 作为存活检查。如果浏览器进程悄然崩溃,守护进程会检测到并报告 DAEMON_DEAD

gracefulShutdown

SIGTERM/SIGINT → 退出驱动 → 删除 .session 文件 → 退出。close 触发相同的路径;kill-all 强制终止一切。

会话注册表

.session JSON 文件存放在 <cache>/ms-se-cli/daemon/ 中。list 会将其与实时进程进行对账并清理孤儿进程。

se-cli list # 查看所有会话 + 对账孤儿进程
se-cli close-all # 优雅关闭每个会话
se-cli kill-all # 强制终止所有守护进程和浏览器

守护进程卡住了?请参阅故障排查指南,了解如何手动清理 .session 文件和套接字路径。