You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium视频容器无法录制测试视频的问题排查与解决

Selenium测试视频录制失败问题解决

问题现象

  • 可通过7900端口的NoVNC正常查看测试执行过程
  • 测试在VSCode终端执行完成,断言结果符合预期
  • selenium-video容器日志无异常输出,也无任何测试结果处理的反馈

环境与初始配置

使用CakePHP框架下的PHPUnit进行测试,初始Docker Compose配置如下:

selenium:
  container_name: selenium
  image: selenium/standalone-edge:latest
  shm_size: 2gb
  networks:
    - frontend
    - backend
  ports:
    - "4444:4444"
    - "7900:7900"
  environment:
    TZ: ${TIMEZONE}
    LANG: en_US.UTF-8 
    LC_ALL: en_US.UTF-8
    LANGUAGE: en_US.UTF-8
  volumes:
    - "$LOCAL_FOLDER:/mnt/local_folder"

selenium-video:
  container_name: selenium-video
  image: selenium/video:ffmpeg-7.1-20250123
  networks:
    - frontend
    - backend
  environment:
    - DISPLAY_CONTAINER_NAME=selenium
    - SE_NODE_GRID_URL=http://selenium:4444
#      - FILE_NAME=chrome_video.mp4
    - SE_VIDEO_FILE_NAME=auto
  volumes:
    - "$LOCAL_FOLDER:/videos"

排查方向

曾怀疑问题源于standalone-edge与node-edge容器的差异。

解决方案

1. 调整selenium-video容器环境变量

问题核心是缺少两个关键环境变量:SE_NODE_PORT和SE_VIDEO_RECORD_STANDALONE。修改后的selenium-video配置如下:

selenium-video:
  container_name: selenium-video
  image: selenium/video:ffmpeg-7.1-20250123
  networks:
    - frontend
    - backend
  environment:
    - DISPLAY_CONTAINER_NAME=selenium
    - SE_NODE_GRID_URL=http://selenium:4444
#      - FILE_NAME=chrome_video.mp4
    - SE_VIDEO_FILE_NAME=auto
    - SE_NODE_PORT=4444
    - SE_VIDEO_RECORD_STANDALONE=true
  volumes:
    - "$LOCAL_FOLDER:/videos"

2. 配置客户端测试代码

需要在测试代码中通过Selenium能力参数控制视频录制,示例代码如下:

// 启动浏览器会话
$capabilities = DesiredCapabilities::microsoftEdge();
$chrome_options = (new ChromeOptions)->addArguments(['--lang' => 'en']);

// 设置语言
$capabilities->setCapability('goog:chromeOptions', $chrome_options);

// 配置Selenium能力参数
$capabilities->setCapability('platformName', 'linux');
$capabilities->setCapability('se:name', basename(__FILE__, '.php')); // 视频文件名前缀,会自动追加会话ID
$capabilities->setCapability('se:recordVideo', 'false'); // 可根据需求控制是否录制当前测试
$capabilities->setCapability('se:screenResolution', '1920x1080'); // 设置录制分辨率

$this->driver = RemoteWebDriver::create('http://selenium:4444/wd/hub', $capabilities);

内容的提问来源于stack exchange,提问作者TechFanDan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:43:18