Selenium Grid 并行测试运行器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/selenium-grid-parallel-test-runner。
技能介绍
解决什么问题
当你的浏览器测试套件覆盖多个浏览器与版本组合时,单机顺序执行会迅速成为瓶颈:一批用例跑下来可能要几个小时,而 CI 流水线的等待时间直接吞掉反馈价值。更麻烦的是资源分配——你很难判断当前瓶颈到底是测试本身太慢,还是 WebDriver 会话没有正确分发到可用节点上。这个技能针对的就是这类分布式浏览器测试编排问题:把测试分发到 Selenium Grid 4 的多个节点上并行跑,并在节点规模变化时动态扩缩。
它是怎么工作的
核心依赖是 selenium-webdriver 提供的 RemoteWebDriver,所有会话都通过 W3C WebDriver 协议与 Grid 通信,而不是直接启动本地浏览器。关键能力包括:
- 跨节点分发:测试请求提交到 Grid 后,由 hub 匹配可用 node 的能力集(浏览器版本、平台等)再执行。
- 动态扩缩容:节点数量根据负载变化调整,避免为峰值长期保留过多容器。
- 执行过程录像:采用 Zalenium 风格的视频记录,测试失败时可以直接回看操作路径,定位是选择器问题还是环境抖动。
大致流程是:准备 Grid 拓扑 → 通过 RemoteWebDriver 创建远程会话 → 分发用例到各节点 → 收集结果与录像 → 汇总报告。
适用边界与注意点
- 依赖 Selenium Grid 4 的 hub/node 拓扑,纯本地
webdriver调用模式不适用。 - 上游提供了锁文件
py/requirements_lock.txt,依赖版本需要与之一致,否则协议或驱动版本不匹配可能导致会话创建失败。 - 如果你更倾向于容器化环境,可以改为构建 Dev Container 或自建 Docker 镜像来承载执行节点。
- 部分操作习惯沿用了上游工程的 Bazel + Rake 封装:通常通过
./go包装命令触发,bazel run会先构建目标再执行,直接敲裸命令可能绕过必要的构建步骤。 - 协议与驱动细节以官方文档为准,Selenium 侧的说明见
https://www.selenium.dev/documentation/。
使用场景
- UI 回归用例覆盖 Chrome、Firefox、Safari 多个版本,需要在 Selenium Grid 4 的多个节点上并行执行并汇总结果。
- CI 中浏览器测试排队严重,希望通过 hub/node 拓扑把会话分发到可用节点,缩短整批测试的等待时间。
- 测试失败时缺少操作路径记录,需要 Zalenium 风格的视频回放来区分选择器错误和环境抖动。
- 节点数量随负载波动,需要根据当前测试排队情况动态扩缩执行节点,避免长期保留过多容器。
适合人员
- QA 工程师:需要在多浏览器和版本组合上稳定跑回归,并在失败时快速定位原因。
- 前端开发者:提交 UI 改动后,希望在 Grid 上并行验证跨浏览器兼容性而不是排队等待。
- DevOps 工程师:负责搭建和运维 Selenium Grid 4 的 CI 执行环境,关注节点扩缩容和资源成本。
- 测试平台开发者:需要通过 RemoteWebDriver 和 W3C WebDriver 协议集成分布式执行与录像能力。