首页/开发/软件测试速查/Selenium Grid 分布式执行
自动化测试66 条

Selenium Grid 分布式执行

Selenium Grid 把测试分发到多个机器与浏览器节点并行执行,本地用 Docker 即可起一套 hub 加 node 的拓扑;适合浏览器矩阵与跨平台组合,环境维护成本需要预先评估。

软件测试速查开发更新于 2026-10-13

Selenium Grid 是什么

Selenium Grid 把测试分发到多台机器与浏览器节点上并行执行:本地用 Docker 即可起一套 hub 加 node 的拓扑,适合浏览器矩阵与跨平台组合。代价是环境维护:节点镜像版本、容量调度与失败重试都要预先设计,否则并行度上去了,稳定性反而下降。

基本信息

架构Hub 分发、Node 执行(新版合并为统一 server)
本地起步容器运行 standalone 模式即可单机验证
远程接入webdriver.Remote 指向 Grid 地址与浏览器选项
并行控制按节点容量设置并发度,避免资源争抢
镜像管理固定浏览器与驱动版本,保证结果可比
失败处理超时与节点故障可重试,并集中收集证据
结果收集视频、截图与日志统一回传存储

起一套 Grid

起一套 Grid
docker run -d -p 4444:4444 --name selenium selenium/standalone-chrome
# 用例指向 Grid:
# webdriver.Remote("http://localhost:4444", options=opts)
# 并行度先按节点数减一,给调度留余量

排队与失败原因

现象原因处理
无可用节点并发超过节点容量降并发或扩容
会话启动超时镜像拉取慢或节点繁忙预热镜像、错峰调度
浏览器行为漂移镜像标签未固定固定镜像版本
僵尸会话节点未清理或进程泄漏定期重启并清理
结果收集不全视频日志未集中存放统一回传存储

典型使用场景

  • 浏览器矩阵:多浏览器多版本并行回归。
  • 跨平台组合:Windows、macOS、Linux 浏览器验证。
  • 本地加速:把长回归切分到多节点缩短时长。
  • 旧浏览器验证:为特定版本单独保留节点。
  • CI 集成:流水线按需拉起 Grid 执行。
  • 容量评估:观察节点利用率与排队时长再扩容。
  • 镜像预热:提前拉取镜像,避免首次调度卡在拉取上。
  • 集群监控:观察排队时长与利用率,按数据扩容。
用例层与节点层并行度叠加会造成资源争抢,调度前先核对节点容量。
节点镜像不固定版本,浏览器升级后脚本行为会漂移。
Grid 解决跨浏览器组合,不解决单浏览器提速:后者优先无头与分片方案。

易错点

  • 节点镜像未固定版本,浏览器升级后脚本行为变化。
  • 并行度超过节点容量,用例超时被误判为缺陷。
  • 失败截图与日志未集中收集,Grid 上排查困难。
  • Grid 长期不重启不清理,僵尸会话拖垮调度。
  • 调试也走 Grid,反馈循环变长:先本地复现再上 Grid。
  • 集群资源无人监控,排队时长悄悄上升。

数据来源与参考

  • Selenium 官方文档:Grid(selenium.dev)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌