本文目录
版本发布公告
Docker 中的七款最新浏览器,每个会话一个容器,录制带声音。了解 WebSummoner 如何延续自 2024 年 12 月起归档的 Selenoid,以及它为何运行在我们自身托管基础设施的核心位置。
如果您的团队在运行 Selenium 测试,那么您很可能接触过 Selenoid:这个小巧的 Go 程序会为每个测试会话在 Docker 容器中启动一个全新的浏览器,用完即弃。它快速、轻量,多年来一直是在自有硬件上运行浏览器网格最简单的方式。2024 年 12 月 17 日,其作者将代码仓库归档。没有公告,也没有告别文章:只有 GitHub 为只读项目加上的那条灰色横幅,仅此而已。
2016 年 8 月 Aerokube 提交了 Selenoid 的第一次代码
2024 年 12 月 17 日 仓库归档,变为只读
2026 年 9 月 WebSummoner 1.0.0:七款最新浏览器,一行配置即可迁移
那天早上什么都没有坏,而这恰恰是问题所在。一个已归档的测试工具,会按照您无法掌控的节奏慢慢腐化:新版浏览器永远不会到来,驱动程序逐渐脱节,终有一天,一套多年来一直全部通过的测试会开始失败,而原因与您的应用毫无关系。
开源不会随着一个仓库的归档而终结
归档一个仓库,结束的是它的维护,而不是它的生命。Selenoid 采用 Apache 2.0 许可证发布,该许可证赋予每一位使用者修改和再分发的永久权利:当项目作者转向其他工作时,代码依然可用,新的维护者可以接过接力棒。Aerokube 打造了 Selenoid,并维护了八年;归档是他们有权做出的决定,Selenoid 所取得的成就也始终归功于他们。WebSummoner 就是这一延续。它从 Selenoid 的最后一次提交出发,保留了让它出色的设计,并拥有自己的名称、组织、镜像和域名。RIADVICE 原本就在生产环境中运行 Selenoid,延续它是一个稳妥的决定,对我们如此,对所有依赖它的人也是如此。
WebSummoner 1.0.0 正式发布:一个快速的 Selenium 中心节点,能将一整队浏览器召唤进 Docker 容器,作为按会话划分的临时环境。
我们为何选择分叉 Selenoid,而不是另寻替代
我们分叉它有两个原因。
-
我们自身的基础设施:WebSummoner 是 RIADVICE 托管基础设施的骨干之一。一个不再获得浏览器更新、驱动修复或安全补丁的生产依赖,我们不能任其停留在归档状态;而迁移到更重量级的方案,成本会比认真维护它更高。
-
社区:世界各地的团队多年来在 Selenoid 之上构建了大量测试套件,他们理应得到一个持续维护的延续版本,而不是看着它慢慢衰败。Selenoid 把重要的事情都做对了:一个约 10 MB 的 Go 单一二进制文件,无需 Java 运行时,无需数据库,浏览器约一秒即可启动,每个会话一个容器,测试之间不会有任何泄漏。
我们保留了所有这些优点,并将其余部分全部更新:浏览器、驱动程序、基础镜像和工具链,这些自 2024 年以来都停滞未动。Selenoid 可以说是一款“已完成”的软件:它不需要最新功能,需要的是最新的浏览器、匹配的驱动程序和持续的修复,而这正是我们承担的工作。兼容性是我们做出的第一个决定,而不是事后补救。Selenoid 客户端发送的一切请求仍会被接受,并且永久如此。
1.0.0 版本有哪些新内容
七款浏览器,全部为最新版本
| 浏览器 | 版本 |
|---|---|
| Chrome | 152 |
| Firefox | 155 |
| Edge | 152 |
| Opera(回归) | 135 |
| Brave(新增) | 1.94 |
| Yandex | 26.6 |
| Safari(WebKitGTK,新增) | 2.52.6 |
每个镜像都要通过同一套容器测试,测试在隔离环境中针对已发布的镜像运行。驱动程序本身无法处理的两种情况会被记录为跳过项,而不是被隐藏。其中三款浏览器本身就是新闻。 Brave 和 Safari 首次发布:Selenoid 从未提供过 Brave 镜像,其 Safari 源码也从未作为镜像发布。Opera 起死回生:它最后一个 Selenoid 镜像停留在 2024 年 4 月,而自从 Selenium 项目放弃对 Opera 的支持后,它就无法在 Selenium 4 中使用了。
Brave 加入阵容
Brave 首次发布:Selenoid 从未提供过它,如今它与其他六款浏览器并列,成为一等镜像。Brave 采用自己的版本编号体系,因此构建工具会读取每个版本内嵌的 Chromium 版本号,并自动匹配相应的驱动程序。如果您的用户使用 Brave 浏览网页,您可以像在 Chrome 上测试一样在 Brave 上测试:相同的能力参数,相同的实时屏幕,相同的录制,同一套测试以同样的方式通过。
Opera 重新可用
Selenium 在 4.3.0 版本中放弃了对 Opera 的支持。人们反复提到的变通办法是用 Chrome for Testing 的 chromedriver 驱动 Opera,这样可以正常启动会话,但每当页面打开新窗口时,渲染进程就会崩溃。解决问题的关键在于认真读懂错误信息:OperaDriver 的版本检查只是一个警告,而不是拒绝。Opera 自己的驱动程序就能正确驱动它,中心节点会代您向它请求现代协议。
Safari 成为一等目标
Safari 同样是首次发布。该镜像基于 WebKitGTK,即 Safari 所使用的同一引擎,从源码构建:Selenoid 虽然保留了构建文件,却从未发布过镜像,因此这是您第一次可以直接拉取的 Safari 镜像。此前一直无法使用的两项功能,文件上传和代理能力参数,现在由中心节点自行处理,因此这一修复适用于任何镜像,无论新旧。剩下的两个小问题各只需在测试中加一行代码,文档中写明了具体做法。
所有浏览器的录制都带声音
会话录制现在能够在全部七款浏览器上可靠地捕获音频,因此失败的媒体或 WebRTC 测试不再是一段无声视频。如果您不需要声音,只需一个能力参数即可关闭。
为运维而打造
提供 Prometheus /metrics 端点、可响应 HEAD 请求的健康探针、队列已满时返回规范的 429、在所有镜像上均可用的文件上传、附带软件物料清单的签名发布镜像,以及一份清楚说明 Docker 套接字意味着什么的安全策略。
全新打造的界面
WebSummoner UI 是网格的实时视图,可查看浏览器屏幕、日志和队列。我们从零开始重新打造了它:精心设计的深色主题、官方浏览器标志、实时会话与队列统计,以及如实的连接状态报告。现有的命令行和 Compose 文件无需任何改动。
现代化的工具链
Go 1.27,测试套件使用 Java 25,界面使用 React 19,浏览器镜像基于 Ubuntu 26.04,CI 中包含依赖更新和漏洞检查,另有一个可搜索的文档网站。构建项目的任何部分都只需要 Docker,别无其他。用于多中心节点集群的负载均衡器和一键安装程序也随中心节点一同升级。
如果您今天就要做选择
Selenoid 所做的事情并没有完美的替代品,但确实有合适的选择。
Selenium Grid:参考实现。如果您需要它的分布式模式,并且不介意 Java 的资源占用,它是正确的选择。
Moon:如果您在 Kubernetes 上运行,并且可以接受超过四个并行会话即需商业许可证,可以选择它。
WebSummoner:适用于 Docker 主机和虚拟机,如果您想要一个小巧、快速、开箱即用的中心节点,它就是您的选择。
文档中维护着一份经源码核实的对比,涵盖 Selenoid、Moon、Selenium Grid、Selenide、Playwright 和 Puppeteer,并说明了在哪些情况下应改用它们。
从 Selenoid 迁移
将您的客户端指向新的中心节点即可。selenoid:options、X-Selenoid-* 请求头、/aerokube/... 路径、cm selenoid start 以及界面的 --selenoid-uri 参数全部仍然可用,并将一直可用。
唯一的变化: 在 Docker 镜像内部,配置目录从 /etc/selenoid 移到了 /etc/websummoner。更新这一挂载点,就大功告成了。
我们的承诺
- 永久兼容。 Selenoid 的能力参数名称、请求头、路径和命令将被永久接受,而不是在倒计时后弃用。一次需要耗费一个迭代周期的迁移,是没有人会去做的迁移。
- 最新的浏览器。 镜像跟随各厂商的稳定版本发布,每个镜像都配有与之匹配的驱动程序,任何镜像在通过测试套件之前都不会打上标签。
- 持续的安全维护。 依赖每周更新,每次构建都会运行漏洞检查,中心节点镜像经过签名,并附带软件物料清单。
- 生产优先。 我们自己就在运行 WebSummoner。我们发布的,就是我们自己所依赖的。
- 如实说明哪些功能不可用的文档。 完整的说明,包括各项限制,都在发布公告中。
WebSummoner 立志在自己的优势领域与最大的网格方案一较高下:速度、简洁和运行成本。每一项变更都以这一标准来衡量。
现已发布
websummoner \
-p 4444:4444 \
-v $PWD/browsers.json:/etc/websummoner/browsers.json:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
websummoner/websummoner:latest将您的测试指向 http://localhost:4444/wd/hub。完整的发布说明、迁移指南和社区讨论,都只需一次点击:
📣 1.0.0 发布公告:完整的发布说明,以及提问的地方 📖 文档:指南、参考资料和迁移指南 💻 源代码:Apache-2.0 许可证,托管于 GitHub
如果您曾使用 Selenoid,而迁移过程中有任何地方表现异常,对我们来说那就是一个缺陷,而不是一个支持问题。如果您曾在 Selenoid 之上维护过某些工具,请告诉我们,我们会确保它继续正常工作。
将一整队浏览器召唤进 Docker 容器。
一个快速的 Selenium 中心节点,提供按会话划分的临时环境。
需要帮助在您的组织中运行 WebSummoner?
WebSummoner 由 RIADVICE 以 Apache-2.0 许可证开发和维护。它构建于 Aerokube 和 Ivan Krutov 开发的 Selenoid,以及 Kirill Merkushev 开发的原始界面之上。





