Agent Skills
返回列表
🔒

Selenium Grid 会话分发器

IT 运维与安全 更新于 2026.08.30

将以下提示词粘贴到你的 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会话加权调度逻辑