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

GKE集群Jenkins触发Selenium测试超时及异常求助

排查与解决指引

环境信息

  • Chrome 镜像:node-chrome:123.0.6312.86-chromedriver-123.0.6312.86-grid-4.19.1-20240402
  • Selenium Hub 镜像:selenium/hub:4.19.1-20240402
  • .NET 版本:6
  • 运行环境:GKE 集群并行节点

问题现象

自周日起测试间歇性失败,多数在截图操作时抛出如下异常:

Unable to execute request for an existing session: java.util.concurrent.TimeoutException

部分测试出现加载随机HTML元素而非目标应用页面的情况,已阻塞回归测试周期。


具体排查与解决步骤

一、核查GKE集群资源与Selenium超时配置

  • 检查节点资源使用率:截图操作对Chrome的CPU、内存消耗较高,并行测试时若节点资源不足会导致进程卡顿触发超时。通过GKE控制台查看节点CPU/内存负载,若存在瓶颈,临时扩容节点或降低测试并行度。
  • 调整Selenium超时参数:
    • Hub启动时增加--session-timeout参数(默认300秒),例如设置为--session-timeout 600延长会话超时时间
    • Node侧同步调整--session-timeout,同时检查--idle-timeout避免空闲会话被过早回收;可结合--override-max-sessions合理控制单节点并发会话数
    • .NET测试代码中调整WebDriver超时:
      driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(60);
      driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
      driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(30);
      

二、优化Chrome实例性能与镜像稳定性

  • 重新拉取镜像避免缓存损坏:
    docker pull selenium/hub:4.19.1-20240402
    docker pull selenium/node-chrome:123.0.6312.86-chromedriver-123.0.6312.86-grid-4.19.1-20240402
    
  • 添加Chrome启动参数减少资源占用:在Node启动时配置以下参数,解决容器内资源限制问题:
    --arguments="--disable-extensions --disable-gpu --no-sandbox --disable-dev-shm-usage --disable-software-rasterizer --window-size=1920,1080"
    
    其中--disable-dev-shm-usage可规避GKE容器中/dev/shm空间不足导致的Chrome崩溃。

三、规范测试代码与会话管理

  • 确保测试结束后彻底销毁会话:在.NET测试的TearDown方法中调用driver.Quit()而非driver.Close(),避免残留会话占用资源。
  • 截图前增加显式等待:确保页面关键元素加载完成后再执行截图,避免页面未渲染完全引发超时:
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
    wait.Until(d => d.FindElement(By.Id("page-loaded-marker")).Displayed);
    var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
    
  • 禁用会话复用:确保每个测试用例使用独立的WebDriver会话,避免跨测试复用导致的状态混乱。

四、排查GKE网络与DNS问题

  • 测试集群内部网络连通性:在Hub和Node容器内执行ping或traceroute,检查节点间网络延迟,若延迟过高,排查GKE集群的区域分布、VPC网络策略。
  • 验证应用域名解析:在Node容器内执行nslookup测试目标应用域名,确认解析结果正确,排除DNS劫持或解析异常导致的页面加载错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:43:24