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

Docker环境下RobotFramework执行CI流程遇InvalidSessionIdException错误求助

解决RobotFramework Docker运行中WebDriver会话崩溃问题

可能的原因与对应解决思路

1. Chrome与ChromeDriver版本不兼容

日志显示Chrome版本为103.0.5060.114,而你使用的ppodgorsek/robot-framework:5.0.0镜像内置的ChromeDriver可能和该版本不匹配——WebDriver要求Chrome与ChromeDriver主版本号严格一致,小版本可兼容。

  • 解决方式:
    • 更换对应版本的镜像:查找内置ChromeDriver 103.x版本的ppodgorsek/robot-framework镜像,比如带chrome-103标签的版本(若存在)
    • 自定义镜像:基于基础镜像安装对应版本的Chrome和ChromeDriver

2. Docker容器内存不足

Chrome在容器环境运行需要足够内存支撑,内存不足会直接触发页面崩溃,进而导致会话失效。

  • 解决方式:
    • 运行Docker命令时增加内存限制,比如添加参数--memory=2g --memory-swap=2g,给容器分配足够内存
    • 检查CI环境的资源配置,确保测试任务能获取到足够的内存配额

3. Chrome启动参数缺失容器适配项

默认启动参数不适合容器环境,需要添加禁用沙箱、调整内存相关的参数。

  • 解决方式:
    • 在RobotFramework测试代码中添加Chrome启动参数:
      Open Browser    ${URL}    chrome    options=add_argument("--no-sandbox");add_argument("--disable-dev-shm-usage");add_argument("--disable-gpu");add_argument("--window-size=1920,1080")
      
    • 或者通过环境变量传递参数,在Docker命令中追加-e CHROME_OPTIONS="--no-sandbox --disable-dev-shm-usage"

4. 挂载目录权限/上下文问题

你挂载目录时使用了:Z标签(SELinux上下文设置),可能导致容器内无法正常访问文件,间接影响测试运行。

  • 解决方式:
    • 尝试去掉:Z标签,改用权限明确的:rw(读写)或:ro(只读),修改后的Docker命令示例:
      docker run --network="my-network" 
       -v /.../frontend/e2e/reports:/opt/robotframework/reports:rw 
       -v /.../frontend/e2e:/opt/robotframework/tests:ro 
       -e BROWSER=chrome ppodgorsek/robot-framework:5.0.0
      
    • 确保宿主机挂载目录的权限正确,容器内默认用户(通常为robot)拥有访问权限

5. 服务未就绪导致页面加载异常

虽然指定了my-network,但如果测试目标服务未完全启动,会导致页面加载失败,进而触发会话崩溃。

  • 解决方式:
    • 在测试用例开头添加服务就绪等待逻辑,比如用Wait Until Keyword Succeeds循环检查目标页面是否可访问
    • 确认my-network内的前端服务运行正常,测试容器能正常连通目标服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:23:20