Selenium Grid视频录制功能部署指南:基于docker-compose-v3-video-in-node.yml的实践
2025-07-07 01:44:13作者:冯爽妲Honey
概述
在现代Web自动化测试中,视频录制功能对于测试过程的可视化和问题排查至关重要。本文将深入解析如何通过Docker Compose部署支持视频录制功能的Selenium Grid集群,重点解读docker-compose-v3-video-in-node.yml配置文件的各项技术细节。
核心组件架构
该配置文件定义了一个完整的Selenium Grid集群,包含以下关键组件:
- Selenium Hub:作为中央调度器,管理所有节点
- 浏览器节点:包括Chrome、Edge和Firefox三种浏览器节点
- 文件浏览器服务:用于查看和管理录制的测试视频
详细配置解析
1. Selenium Hub配置
selenium-hub:
image: selenium/hub:4.34.0-20250707
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
- 使用特定版本(4.34.0-20250707)的hub镜像确保稳定性
- 暴露三个端口:4444用于Grid通信,4442/4443用于内部管理
2. 浏览器节点配置
以Chrome节点为例:
chrome:
deploy:
mode: replicated
replicas: 3
image: selenium/node-chrome:4.34.0-20250707
platform: linux/amd64
shm_size: 2gb
depends_on:
- selenium-hub
volumes:
- /tmp/videos:/videos
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_RECORD_VIDEO=true
- SE_VIDEO_FILE_NAME=auto
- SE_NODE_GRID_URL=http://selenium-hub:4444
关键配置项说明:
- replicas: 3:创建3个相同的Chrome节点实例,提高并发能力
- shm_size: 2gb:设置共享内存大小,防止浏览器崩溃
- volumes映射:将宿主机/tmp/videos映射到容器内/videos目录
- 视频录制参数:
- SE_RECORD_VIDEO=true 启用视频录制
- SE_VIDEO_FILE_NAME=auto 自动生成视频文件名
3. 文件浏览器服务
file_browser:
image: filebrowser/filebrowser:latest
container_name: file_browser
restart: always
ports:
- "8081:80"
volumes:
- /tmp/videos:/srv
environment:
- FB_NOAUTH=true
- 提供Web界面(8081端口)查看录制的测试视频
- 无认证模式(FB_NOAUTH=true)简化访问
- 共享相同的视频存储卷(/tmp/videos)
部署与使用指南
1. 启动集群
docker compose -f docker-compose-v3-video-in-node.yml up -d
添加-d
参数以守护进程模式运行
2. 访问服务
- Grid控制台:http://localhost:4444
- 视频管理界面:http://localhost:8081
3. 停止集群
docker compose -f docker-compose-v3-video-in-node.yml down
高级配置建议
-
视频存储优化:
- 修改/tmp/videos为持久化存储路径
- 考虑添加定期清理旧视频的脚本
-
性能调优:
- 根据测试需求调整replicas数量
- 监控shm_size使用情况,必要时增加
-
安全增强:
- 为文件浏览器添加基础认证
- 限制Grid控制台的访问权限
常见问题排查
-
视频未生成:
- 检查/tmp/videos目录权限
- 确认SE_RECORD_VIDEO环境变量设置正确
-
浏览器节点无法连接Hub:
- 检查depends_on配置
- 验证网络连接和端口映射
-
视频文件损坏:
- 增加shm_size大小
- 检查磁盘空间是否充足
结语
通过本文介绍的docker-compose配置,您可以快速搭建一个支持视频录制功能的Selenium Grid集群。这种部署方式不仅简化了环境搭建过程,还提供了测试过程可视化的重要能力,极大提升了自动化测试的效率和可维护性。