Selenium Grid 会话分发器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/selenium-grid-session-distributor 技能。
技能介绍
解决什么问题
Selenium Grid 4 通常以多节点形式部署,同时承载 Chrome、Firefox、Edge 等浏览器实例。在这类环境中,真正棘手的往往不是“能不能跑测试”,而是:多个并发会话如何分配到不同节点、某一节点负载或健康状态变化时如何自动调整,以及不同浏览器实例的调度权重如何设置。传统做法中,如果只是简单轮询,很容易出现部分节点过载、部分浏览器资源闲置,或者节点故障后会话仍被发往该节点的问题。
核心能力与工作方式
这个技能围绕 Selenium Grid 的会话分发问题,提供基于 query/status 的节点状态读取和加权轮询调度能力。它并不替代 Selenium Grid 本身,而是在 Grid 之上做一层更可控的分配逻辑。
- 读取节点状态:通过 GraphQL 的
query/status端点获取各节点的会话数、可用容量等信息。 - 加权轮询调度:结合
SE_NODE_MAX_SESSIONS配置,对 Chrome、Firefox、Edge 实例做加权分配。 - 健康检查与故障转移:当某个节点不可用或达到容量上限时,自动将新会话调度到其他健康节点。
工作流程可以概括为:先查询当前 Grid 状态,再根据节点容量与浏览器类型计算权重,然后按加权轮询策略选择目标节点并发起会话创建请求。如果目标节点在分发过程中被判定为不健康,会切换到下一个可用节点。
适用边界与注意点
该技能适用于已经部署 Selenium Grid 4 的环境,尤其是使用多浏览器、多节点、需要避免单点过载的场景。它更适合作为会话分配层的辅助工具,而不是完整替代 Grid 自身的调度机制。
需要注意的点包括:SE_NODE_MAX_SESSIONS 的实际值取决于各节点容器或进程配置,如果环境没有正确暴露该配置,权重计算可能偏离预期;Docker 或 Dev Container 环境下,需要确认 GraphQL 端点可达且健康检查端口没有隔离;Bazel 和 ./go 封装命令来源于上游工程习惯,不是本技能运行的核心依赖。
如果只是小规模单机测试,或者尚未使用 Selenium Grid 4,这类分发能力带来的收益会比较有限。
使用场景
- 多浏览器CI测试环境中,需将并发Chrome/Firefox/Edge会话按权重分配到Selenium Grid 4各节点
- 某Selenium Grid节点故障时,需自动将新浏览器会话切换至健康节点,保障测试任务不中断
- 按不同浏览器实例的容量配置(SE_NODE_MAX_SESSIONS),实现Selenium Grid节点的加权轮询调度
- 监控Selenium Grid 4节点会话占用,避免部分节点过载而其他节点闲置
适合人员
- Selenium Grid 4集群运维工程师,需要避免多浏览器并发会话导致节点过载或分配不均
- CI/CD流水线测试工程师,需保障多浏览器自动化测试任务在Grid故障时持续运行
- 浏览器测试基础设施开发者,需要实现基于节点容量的Selenium Grid会话加权调度逻辑