首页
/ Selenium Docker 容器视频录制与自动上传方案详解

Selenium Docker 容器视频录制与自动上传方案详解

2025-07-07 01:44:57作者:瞿蔚英Wynne

概述

在现代自动化测试中,视频录制功能对于测试过程的可视化和问题排查至关重要。SeleniumHQ/docker-selenium 项目提供了一个完整的解决方案,通过 Docker Compose 配置实现浏览器自动化测试过程中的视频录制与自动上传功能。本文将深入解析这一技术方案的核心组件和工作原理。

架构组成

该方案由以下几个关键组件构成:

  1. 浏览器节点容器:包括 Chrome、Edge 和 Firefox 三种主流浏览器
  2. Selenium Hub:作为网格中心协调测试任务分发
  3. 视频录制容器:为每个浏览器节点配备独立的视频录制服务
  4. FTP 服务器:用于接收和存储录制的测试视频
  5. 文件浏览器:提供 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

查看视频文件

  1. 通过文件浏览器访问:http://localhost:8081
  2. 或直接在宿主机上查看:/tmp/upload 目录

性能优化建议

  1. 共享内存配置:浏览器节点配置了 shm_size: 2gb 以避免内存不足问题
  2. 上传并发控制:通过 FTP_CONCURRENCY 参数优化 FTP 上传性能
  3. 资源隔离:每个浏览器及其视频录制服务独立运行,避免相互干扰

安全注意事项

  1. 生产环境中应禁用文件浏览器的无认证模式(FB_NOAUTH=false
  2. 建议修改默认的 FTP 用户凭据
  3. 考虑使用更安全的协议(如 SFTP)替代 FTP
  4. 定期清理 /tmp/upload 目录避免磁盘空间耗尽

扩展应用场景

该方案不仅适用于测试视频录制,还可应用于:

  1. 自动化演示录制
  2. 用户行为分析
  3. 质量保证文档生成
  4. 远程测试过程监控

总结

Selenium Docker 的视频录制与上传方案提供了一套完整的、可扩展的自动化测试可视化解决方案。通过合理的容器化设计和组件集成,实现了测试过程的可视化记录和便捷管理。开发者和测试工程师可以根据实际需求调整配置,构建适合自身业务场景的自动化测试平台。