selenium/router本镜像提供Selenium Grid Router组件,需与Selenium分布式网格的其他组件配合使用。这些组件共同构成分布式测试架构,支持远程运行WebDriver测试。
适用于需要大规模并行执行WebDriver测试的场景,包括:
分布式网格至少需6个组件协同工作:Router、Session Queue、Distributor、Event Bus、Session Map、Node(浏览器节点)。推荐通过docker-compose部署完整架构。
yaml# 执行命令:docker-compose -f docker-compose-v3-full-grid.yml up # 添加`-d`参数可后台运行;停止命令:docker-compose -f docker-compose-v3-full-grid.yml down version: "3" services: # 事件总线:组件间通信中枢 selenium-event-bus: image: selenium/event-bus:latest container_name: selenium-event-bus ports: - "4442:4442" # 发布端口 - "4443:4443" # 订阅端口 - "5557:5557" # 调试端口 # 会话映射:管理活跃测试会话 selenium-sessions: image: selenium/sessions:latest container_name: selenium-sessions ports: - "5556:5556" # 会话映射服务端口 depends_on: - selenium-event-bus environment: - SE_EVENT_BUS_HOST=selenium-event-bus # 事件总线主机名 - SE_EVENT_BUS_PUBLISH_PORT=4442 # 事件总线发布端口 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 # 事件总线订阅端口 # 会话队列:管理待处理的测试请求队列 selenium-session-queue: image: selenium/session-queue:latest container_name: selenium-session-queue ports: - "5559:5559" # 会话队列服务端口 # 分发器:将请求分配至可用节点 selenium-distributor: image: selenium/distributor:latest container_name: selenium-distributor ports: - "5553:5553" # 分发器端口 depends_on: - selenium-event-bus - selenium-sessions - selenium-session-queue environment: - SE_EVENT_BUS_HOST=selenium-event-bus # 事件总线主机名 - SE_EVENT_BUS_PUBLISH_PORT=4442 # 事件总线发布端口 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 # 事件总线订阅端口 - SE_SESSIONS_MAP_HOST=selenium-sessions # 会话映射服务主机名 - SE_SESSIONS_MAP_PORT=5556 # 会话映射服务端口 - SE_SESSION_QUEUE_HOST=selenium-session-queue # 会话队列服务主机名 - SE_SESSION_QUEUE_PORT=5559 # 会话队列服务端口 # Router:测试请求入口 selenium-router: image: selenium/router:latest container_name: selenium-router ports: - "4444:4444" # 对外提供的WebDriver接口端口 depends_on: - selenium-distributor - selenium-sessions - selenium-session-queue environment: - SE_DISTRIBUTOR_HOST=selenium-distributor # 分发器主机名 - SE_DISTRIBUTOR_PORT=5553 # 分发器端口 - SE_SESSIONS_MAP_HOST=selenium-sessions # 会话映射服务主机名 - SE_SESSIONS_MAP_PORT=5556 # 会话映射服务端口 - SE_SESSION_QUEUE_HOST=selenium-session-queue # 会话队列服务主机名 - SE_SESSION_QUEUE_PORT=5559 # 会话队列服务端口 # 浏览器节点:实际执行测试的容器(示例包含Chrome、Edge、Firefox) chrome: image: selenium/node-chrome:latest shm_size: 2gb # 浏览器共享内存大小(推荐至少2GB) depends_on: - selenium-event-bus environment: - SE_EVENT_BUS_HOST=selenium-event-bus - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 edge: image: selenium/node-edge:latest shm_size: 2gb depends_on: - selenium-event-bus environment: - SE_EVENT_BUS_HOST=selenium-event-bus - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 firefox: image: selenium/node-firefox:latest shm_size: 2gb depends_on: - selenium-event-bus environment: - SE_EVENT_BUS_HOST=selenium-event-bus - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
| 组件 | 端口 | 用途 |
|---|---|---|
| Router | 4444 | WebDriver测试请求入口端口 |
| Event Bus | 4442 | 事件发布端口 |
| Event Bus | 4443 | 事件订阅端口 |
| Event Bus | 5557 | 调试端口 |
| Session Map | 5556 | 会话映射服务端口 |
| Session Queue | 5559 | 会话队列服务端口 |
| Distributor | 5553 | 分发器端口 |
| 环境变量 | 说明 | 默认值示例 |
|---|---|---|
| SE_DISTRIBUTOR_HOST | 分发器组件主机名 | selenium-distributor |
| SE_DISTRIBUTOR_PORT | 分发器服务端口 | 5553 |
| SE_SESSIONS_MAP_HOST | 会话映射服务主机名 | selenium-sessions |
| SE_SESSIONS_MAP_PORT | 会话映射服务端口 | 5556 |
| SE_SESSION_QUEUE_HOST | 会话队列服务主机名 | selenium-session-queue |
| SE_SESSION_QUEUE_PORT | 会话队列服务端口 | 5559 |
部署完成后,WebDriver测试脚本需指向Router的接口地址:http://localhost:4444。
为确保版本稳定性,推荐使用完整标签固定具体版本。标签结构如下:
selenium/router-<Major>.<Minor>.<Patch>-<YYYYMMDD>
selenium/router:4 # 主版本4(自动更新至最新次版本) selenium/router:4.9 # 主版本4.9(自动更新至最新补丁版本) selenium/router:4.9.0 # 完整版本号4.9.0 selenium/router:4.9.0-20230426 # 包含发布日期的精确版本
详细标签规则参见Selenium Docker标签约定。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务