Selenium Docker 容器视频录制与自动上传方案详解
2025-07-07 01:44:57作者:瞿蔚英Wynne
概述
在现代自动化测试中,视频录制功能对于测试过程的可视化和问题排查至关重要。SeleniumHQ/docker-selenium 项目提供了一个完整的解决方案,通过 Docker Compose 配置实现浏览器自动化测试过程中的视频录制与自动上传功能。本文将深入解析这一技术方案的核心组件和工作原理。
架构组成
该方案由以下几个关键组件构成:
- 浏览器节点容器:包括 Chrome、Edge 和 Firefox 三种主流浏览器
- Selenium Hub:作为网格中心协调测试任务分发
- 视频录制容器:为每个浏览器节点配备独立的视频录制服务
- FTP 服务器:用于接收和存储录制的测试视频
- 文件浏览器:提供 Web 界面查看和管理上传的视频文件
核心功能解析
视频录制机制
视频录制容器基于 FFmpeg 实现,具有以下特点:
- 每个浏览器节点对应一个独立的视频容器
- 支持自动生成视频文件名(通过
SE_VIDEO_FILE_NAME=auto
配置) - 录制完成后自动上传到指定 FTP 服务器
- 通过环境变量
DISPLAY_CONTAINER_NAME
指定关联的浏览器容器
自动上传功能
上传功能通过 Rclone 工具实现,关键配置包括:
- 上传目标类型设置为 FTP(
RCLONE_CONFIG_MYFTP_TYPE=ftp
) - FTP 服务器连接信息(主机、端口、用户名、密码)
- 上传并发数控制(
RCLONE_CONFIG_MYFTP_FTP_CONCURRENCY=10
) - 目标路径前缀(
SE_UPLOAD_DESTINATION_PREFIX=myftp://ftp/seluser
)
密码安全方面,使用了 Rclone 的 obscure
命令对密码进行加密处理,而非明文存储。
FTP 服务器配置
采用轻量级的 Alpine FTP 服务器,特点包括:
- 预配置用户
seluser
及其密码 - 将容器内的
/ftp/seluser
目录映射到宿主机的/tmp/upload
- 使用
tini
作为初始化系统确保进程管理
文件浏览器
提供便捷的 Web 界面管理上传的视频文件:
- 运行在 8081 端口
- 无需认证(
FB_NOAUTH=true
) - 直接访问 FTP 服务器存储目录
部署与使用指南
启动服务
docker compose -f docker-compose-v3-video-upload.yml up
如需后台运行,添加 -d
参数:
docker compose -f docker-compose-v3-video-upload.yml up -d
停止服务
docker compose -f docker-compose-v3-video-upload.yml down
查看视频文件
- 通过文件浏览器访问:
http://localhost:8081
- 或直接在宿主机上查看:
/tmp/upload
目录
性能优化建议
- 共享内存配置:浏览器节点配置了
shm_size: 2gb
以避免内存不足问题 - 上传并发控制:通过
FTP_CONCURRENCY
参数优化 FTP 上传性能 - 资源隔离:每个浏览器及其视频录制服务独立运行,避免相互干扰
安全注意事项
- 生产环境中应禁用文件浏览器的无认证模式(
FB_NOAUTH=false
) - 建议修改默认的 FTP 用户凭据
- 考虑使用更安全的协议(如 SFTP)替代 FTP
- 定期清理
/tmp/upload
目录避免磁盘空间耗尽
扩展应用场景
该方案不仅适用于测试视频录制,还可应用于:
- 自动化演示录制
- 用户行为分析
- 质量保证文档生成
- 远程测试过程监控
总结
Selenium Docker 的视频录制与上传方案提供了一套完整的、可扩展的自动化测试可视化解决方案。通过合理的容器化设计和组件集成,实现了测试过程的可视化记录和便捷管理。开发者和测试工程师可以根据实际需求调整配置,构建适合自身业务场景的自动化测试平台。