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

Jenkins上Robot Framework测试出现WebDriverException问题排查

关于Robot Framework在Jenkins运行14个用例后抛出WebDriverException的排查思路

这种问题我之前在CI环境里踩过好几次坑,结合你给出的错误信息(Driver info: driver.version: unknown),大概率是以下几个原因导致的,咱们一步步分析:

1. WebDriver实例未正确回收,导致资源耗尽

本地运行时,浏览器的关闭机制可能因为桌面环境的特性能正常工作,但Jenkins是无头/无桌面的Linux环境,很容易出现驱动进程泄漏:

  • 检查你的用例Teardown步骤,是不是每个用例结束后都确保调用了Close Browser或Quit Browser?尤其是用例失败时,有没有因为异常跳过了清理步骤?
  • 可以在Jenkins节点上跑用例时,用ps aux | grep chrome(或对应浏览器进程名)看看,是不是每跑完一个用例,浏览器进程都被正常杀死了。如果堆积了十几个进程,那就是泄漏无疑了。

2. Jenkins节点资源不足

你的本地机器配置可能比较充裕,但Jenkins运行的Linux节点内存/CPU可能不够:

  • 当运行到第14个用例时,多个浏览器实例占用的内存可能把节点的可用内存榨干了,导致新的WebDriver实例无法启动,直接抛出驱动版本未知的错误。
  • 可以在Jenkins任务里加个前置步骤,用free -h、top -b -n 1输出节点的资源状态,对比用例运行前后的内存变化,就能验证是不是资源不够的问题。

3. 浏览器与WebDriver版本不兼容

虽然本地运行正常,但Jenkins环境的浏览器版本和WebDriver版本可能不匹配:

  • 比如你本地Chrome是114版本,对应ChromeDriver114,但Jenkins上的Chrome自动更到了116,驱动还是旧的114,这种版本不兼容可能不会立刻报错,跑几个用例后才触发进程崩溃。
  • 登录Jenkins节点,分别查看浏览器版本(比如google-chrome --version)和WebDriver版本(比如chromedriver --version),确保两者大版本一致。

4. 无头模式的特殊配置缺失

如果Jenkins上用的是无头浏览器模式,Linux环境下有几个关键参数没配置的话,很容易出问题:

  • Linux的/dev/shm分区默认很小,无头Chrome默认会用这个分区存储临时数据,跑多个实例后会直接耗尽,导致浏览器崩溃。
  • 建议在启动浏览器时加上这些参数:
    Open Browser    ${URL}    Chrome    options=add_argument("--no-sandbox");add_argument("--disable-dev-shm-usage");add_argument("--headless=new")
    

关于是否需要拆分大型UI测试用例?

拆分大型用例是推荐的实践,但它不是解决当前问题的直接方案,不过能从根源上降低资源压力:

  • 把一个包含几十步的大拆成几个小用例,每个用例专注一个功能点,不仅更容易维护,还能减少单个用例占用的资源。
  • 另外可以考虑用套件级别的Setup/Teardown,让整个测试套件共用一个浏览器实例,减少重复启动/关闭浏览器的开销,但一定要确保套件结束时正确销毁驱动实例,避免泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:49