selenium/hubSelenium Grid Hub镜像提供Selenium Grid Hub功能,需与一个或多个Selenium Grid Node配合使用,用于实现WebDriver测试的远程执行。Hub作为Selenium Grid的中心节点,负责协调和分发测试任务至连接的Node节点,支持分布式测试环境的构建。
http://localhost:4444/ui),用于查看Grid运行状态和任务执行情况Hub与Node需在同一网络中通过容器名称通信,首先创建专用网络:
bashdocker network create grid
使用创建的网络启动Hub容器,映射必要端口:
bashdocker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest
参数说明:
-d:后台运行容器-p 4442-4444:4442-4444:映射端口(4442=事件总线发布端口,4443=事件总线订阅端口,4444=Hub服务端口)--net grid:加入之前创建的grid网络--name selenium-hub:指定容器名称(Node需通过此名称通信)在同一网络中启动Node容器,需配置与Hub的事件总线通信参数。以下示例包含Chrome、Edge、Firefox三种浏览器节点:
bash# Chrome节点 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \ --shm-size="2g" \ -e SE_EVENT_BUS_PUBLISH_PORT=4442 \ -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \ selenium/node-chrome:latest # Edge节点 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \ --shm-size="2g" \ -e SE_EVENT_BUS_PUBLISH_PORT=4442 \ -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \ selenium/node-edge:latest # Firefox节点 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \ --shm-size="2g" \ -e SE_EVENT_BUS_PUBLISH_PORT=4442 \ -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \ selenium/node-firefox:latest
powershell# Chrome节点 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub ` --shm-size="2g" ` -e SE_EVENT_BUS_PUBLISH_PORT=4442 ` -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 ` selenium/node-chrome:latest # Edge节点 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub ` --shm-size="2g" ` -e SE_EVENT_BUS_PUBLISH_PORT=4442 ` -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 ` selenium/node-edge:latest # Firefox节点 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub ` --shm-size="2g" ` -e SE_EVENT_BUS_PUBLISH_PORT=4442 ` -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 ` selenium/node-firefox:latest
Node配置参数说明:
--shm-size="2g":设置共享内存大小(浏览器运行需较大共享内存,避免崩溃)SE_EVENT_BUS_HOST:Hub容器名称(需与Hub的--name一致)SE_EVENT_BUS_PUBLISH_PORT:Hub事件总线发布端口(固定4442)SE_EVENT_BUS_SUBSCRIBE_PORT:Hub事件总线订阅端口(固定4443)将测试代码中的远程WebDriver目标地址指向Hub服务端口:
java// Java示例 WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444"), new ChromeOptions());
通过Grid UI查看节点状态和任务执行情况:
访问 http://localhost:4444/ui
测试完成后,停止并删除容器,可选择删除网络:
bash# 停止所有Grid容器(Hub和Node) docker stop selenium-hub $(docker ps -q --filter "network=grid") # 删除所有Grid容器 docker rm selenium-hub $(docker ps -aq --filter "network=grid") # 删除Grid网络(可选) docker network rm grid
镜像标签遵循以下结构,用于指定Selenium Grid版本和发布日期:
selenium/hub-<Major>.<Minor>.<Patch>-<YYYYMMDD>
示例:Selenium Grid Server 4.9.0(2023年4月26日发布)对应标签:
selenium/hub:4(主版本4的最新版)selenium/hub:4.9(主版本4.9的最新版)selenium/hub:4.9.0(具体版本4.9.0)selenium/hub:4.9.0-20230426(包含发布日期的完整标签)建议:生产环境使用完整标签(如4.9.0-20230426)以固定版本,避免latest标签带来的版本变动风险。
| 环境变量名 | 作用 | 示例值 |
|---|---|---|
SE_EVENT_BUS_HOST | Hub容器名称(Node与Hub通信地址) | selenium-hub |
SE_EVENT_BUS_PUBLISH_PORT | Hub事件总线发布端口 | 4442 |
SE_EVENT_BUS_SUBSCRIBE_PORT | Hub事件总线订阅端口 | 4443 |
更多配置示例和高级用法,请参考GitHub项目文档:
Docker-Selenium官方文档
本项目基于Apache License 2.0开源许可协议,源代码由社区志愿者维护。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务