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

执行Maven测试时遇Selenium WebSocket连接失败问题求助

解决Selenium 4.4.0中WebSocket连接失败导致TestNG setUp失败的问题

以下是针对该问题的具体排查和解决步骤:

1. 确保ChromeDriver与Chrome浏览器版本严格匹配

Selenium 4.x对ChromeDriver和Chrome的版本一致性要求严格,大版本必须完全对应(例如Chrome 108.x对应ChromeDriver 108.x)。

  • 打开Chrome浏览器,输入chrome://version/查看当前浏览器版本
  • 下载对应版本的ChromeDriver替换项目驱动;或使用WebDriverManager自动管理版本,代码示例:
    import io.github.bonigarcia.wdm.WebDriverManager;
    // 在setUp方法开头添加
    WebDriverManager.chromedriver().setup();
    

2. 调整Chrome启动参数,修复WebSocket连接限制

添加必要的启动参数解决跨域和权限问题:

ChromeOptions options = new ChromeOptions();
// 允许跨域连接,解决Selenium 4.x的WebSocket跨域拦截
options.addArguments("--remote-allow-origins=*");
// 禁用沙箱模式,解决Windows下权限相关问题
options.addArguments("--no-sandbox");
// 禁用/dev/shm使用,避免资源不足导致的连接失败
options.addArguments("--disable-dev-shm-usage");
// 禁用Web安全限制(仅测试环境使用)
options.addArguments("--disable-web-security");

WebDriver driver = new ChromeDriver(options);

3. 排查系统防火墙与代理干扰

  • 临时关闭Windows防火墙,重新执行测试,确认是否是防火墙拦截了localhost的WebSocket连接
  • 如果使用代理服务器,需在ChromeOptions中排除localhost的代理:
    Proxy proxy = new Proxy();
    proxy.setNoProxy("localhost,127.0.0.1");
    options.setProxy(proxy);
    

4. 升级Selenium到最新稳定版本

Selenium 4.4.0存在已知的WebSocket兼容性问题,升级到最新稳定版可修复此类问题。修改Maven依赖:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.15.0</version> <!-- 替换为最新稳定版 -->
</dependency>

5. 简化TestNG setUp方法排查逻辑问题

暂时移除setUp方法中除驱动初始化外的其他逻辑,验证是否是业务代码干扰了驱动初始化。确保没有提前调用driver.quit()或其他破坏驱动状态的代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:25:18