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

Selenium自动化测试报WebSocket空指针错误,寻求解决方案

解决思路:Selenium ChromiumDriver quit时出现WebSocket NPE问题

根据你提供的错误栈和描述,这个NullPointerException是在ChromiumDriver执行quit()方法时,尝试关闭未初始化成功的WebSocket连接导致的,结合你未修改代码但突然出现问题的情况,以下是具体解决方向:

  • 检查浏览器与WebDriver版本兼容性
    浏览器(Chrome/Edge等Chromium内核浏览器)会自动更新,若更新后的版本与项目中使用的ChromeDriver/EdgeDriver版本不匹配,会导致Selenium与浏览器的WebSocket通信异常。
    操作步骤:

    1. 查看浏览器版本(Chrome:设置→关于Chrome)
    2. 下载对应主版本号的WebDriver(比如浏览器是123.x,就下载123.x版本的Driver)
    3. 替换项目中旧的WebDriver文件,或确保依赖管理工具(如Maven/Gradle)拉取的Driver版本匹配
  • 升级Selenium依赖到最新稳定版
    旧版本Selenium可能存在对新版本Chromium浏览器的兼容性bug,升级到最新稳定版可以修复这类WebSocket连接相关的问题。比如在Maven中更新selenium-java的版本:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.18.1</version> <!-- 替换为最新稳定版 -->
    </dependency>
    
  • 检查测试初始化逻辑
    错误发生在Step_DoSomething.before方法中调用quit()时,需确认:

    1. 是否在Driver实例未成功创建的情况下就调用了quit()
    2. 初始化Driver时是否抛出了隐藏的异常,导致WebSocket连接未建立但Driver对象未被标记为无效
      可以在before方法中增加Driver实例的非空判断,或捕获初始化时的异常:
    // 示例:在quit前检查Driver是否有效
    if (driver != null) {
        try {
            driver.quit();
        } catch (Exception e) {
            // 记录日志,避免终止测试流程
            e.printStackTrace();
        }
    }
    
  • 排查网络环境干扰
    若3月14日起网络环境有变化(如新增代理、防火墙规则),可能导致Selenium与浏览器之间的WebSocket连接无法建立,最终socket对象为null。可以尝试在无代理的网络环境下运行测试,或配置Selenium使用对应代理:

    Proxy proxy = new Proxy();
    proxy.setHttpProxy("proxy.example.com:8080");
    ChromeOptions options = new ChromeOptions();
    options.setProxy(proxy);
    WebDriver driver = new ChromeDriver(options);
    
  • 禁用浏览器自动更新
    为避免后续再次出现版本不匹配问题,可以禁用浏览器的自动更新功能(不同系统操作不同,比如Windows组策略、Mac系统设置),或使用固定版本的浏览器镜像进行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:45:15