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

K8s集群部署Selenium Grid,本地/CI执行TestCafe测试无法启动selenium:chrome

排查方案:TestCafe外部访问Selenium Grid报ECONNRESET

核心问题分析

你提到集群内测试正常,但外部(本地/CI)能创建会话却断连,本质是会话建立后TestCafe与Selenium Node的通信链路异常——Hub负责会话调度,但实际浏览器会话在Node上,集群内Job能直接访问Node的内部地址,而外部环境无法解析/访问这些内部地址。

具体排查步骤

  • 检查Selenium Grid节点的暴露方式与注册地址
    Selenium Grid 4.x默认分布式部署,Hub和Node是独立组件。节点注册时默认使用集群内部IP,外部环境(本地/CI)只能访问Hub,但Hub返回的节点地址是内部IP,导致TestCafe无法和Node建立后续连接。
    解决:

    1. 将Selenium Node的Service类型改为NodePort或LoadBalancer,暴露节点的端口(默认5555)
    2. 启动Node时设置环境变量SE_NODE_HOST=<节点外部可访问IP/域名>和SE_NODE_PORT=<暴露的端口>,让节点以外部地址注册到Hub
  • 调整连接超时参数
    外部网络延迟可能导致连接超时,尝试增加TestCafe的浏览器连接超时:

    testcafe selenium:chrome --browser-connection-timeout 120000
    

    同时在Selenium Grid的配置中调整会话超时(可通过SE_SESSION_TIMEOUT环境变量设置,单位秒)

  • 排查TLS/SSL配置
    如果Grid启用了HTTPS,外部TestCafe客户端可能未信任Grid的证书,导致连接重置。可临时禁用HTTPS测试是否恢复正常,或为TestCafe配置信任的证书。

  • 检查Kubernetes网络策略
    确认集群是否存在网络策略,阻止了外部流量访问Selenium Node的端口。需添加允许本地/CI IP段访问Node端口的网络策略规则。

  • 验证TestCafe版本与Grid适配
    检查本地/CI的TestCafe版本是否与集群内一致,版本差异可能导致适配问题。另外,尝试指定Grid的完整端点路径:

    testcafe selenium:http://<hub-external-ip>:4444/wd/hub/chrome
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:48:24