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

Selenium测试报错求助:java.lang.NoClassDefFoundError: HasTouchScreen

问题分析与解决方案

错误原因

这个NoClassDefFoundError本质是缺少Selenium Interactions模块的依赖,org.openqa.selenium.interactions.HasTouchScreen类属于Selenium的交互模块,若项目未引入该模块或依赖版本不兼容,就会触发这个错误。

同时测试代码存在几个逻辑问题,会加剧错误:

  1. 静态driver初始化时机错误:类加载时就执行new ChromeDriver(),但系统属性webdriver.chrome.driver是在@BeforeSuite中才设置,导致驱动初始化时找不到配置,同时触发类加载时的依赖缺失报错。
  2. @BeforeSuite方法误用main签名:TestNG的注解方法不需要main方法的参数列表,TestNG运行时不会以这种方式调用该方法。
  3. 注解方法用static修饰:TestNG注解方法通常使用实例方法,静态方法可能导致上下文管理异常。

解决步骤

1. 修复依赖问题

如果用Maven管理项目,确保引入完整的Selenium Java依赖(包含交互模块),版本统一:

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

如果是手动导入JAR包,要确保包含selenium-interactions-xxx.jar,且所有Selenium相关JAR版本一致。

2. 修正测试代码

调整初始化逻辑和TestNG注解用法,修正后的代码如下:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class TestPlan {
    private WebDriver driver;

    @BeforeSuite
    public void setUp() {
        // 先设置驱动路径,再初始化WebDriver
        System.setProperty("webdriver.chrome.driver", Utils.CHROME_DRIVER_LOCATION);
        driver = new ChromeDriver();
    }

    @Test(testName = "Submit a WebForm")
    public void submitForm(){
        driver.get(Utils.BASE_URL);
        WebForm webForm = new WebForm(driver);
        webForm.enterFirstName();
        webForm.enterLastName();
        webForm.pressSubmitButton();
    }

    @AfterSuite
    public void cleanUp(){
        driver.manage().deleteAllCookies();
        driver.quit(); // 用quit彻底关闭浏览器进程,替代仅关闭当前窗口的close
    }
}

代码修正说明

  • 将driver改为实例变量,在@BeforeSuite方法中完成初始化,确保系统属性先配置完成
  • 移除@BeforeSuite方法的main签名,改为符合TestNG规范的无参方法
  • 所有注解方法改为非静态,避免静态上下文导致的资源管理问题
  • 用driver.quit()替代driver.close(),确保测试结束后彻底清理浏览器资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:15:34