What causes java.lang.NoClassDefFoundError: org/openqa/selenium/internal/Require when using WebDriverManager 5.0.3

What causes java.lang.NoClassDefFoundError: org/openqa/selenium/internal/Require when using WebDriverManager 5.0.3

我有一个 spring 引导应用程序,我想用 Selenium 对其进行测试。我正在使用 WebDriverManager v5.0.3

设置 WebDriver WebDriverManager.chromedriver().setup(); 时出现异常:

java.lang.NoClassDefFoundError: org/openqa/selenium/internal/Require

java.lang.ClassNotFoundException: org.openqa.selenium.internal.FindsById

我的 pom.xml 包含这个:

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>4.1.0</version>
        </dependency>

WebDriverManager v5.0.3 与 Selenium v​​4 不兼容。将 Selenium 降级到最新的 v3 颠覆后,一切正常。

更新: 根据下面的评论,它适用于 WebDriverManager >=v5.1.0

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>3.141.59</version>
        </dependency>

将版本更改为 4** 或将此依赖项添加到 pom 文件后,需要在 pom.xml 文件所在的同一目录上执行 mvn clean compile 命令。

您可以检查您的库与您的项目。

我也遇到了这个问题,最后我在我的maven项目中发现selenium的依赖库没有相同的版本。

我创建了一个新项目,使用 Gradle 除了 Maven 和 selenium 4.0.0,它工作正常。

所以我检查了不正确的库并手动调整到与我 pom.xml 中的 selenium-java 库相同的版本。终于成功了。

顺便说一句:mvn clean install 对我不起作用。

    <!-- only this origin -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.0.0</version>
    </dependency>
    <!-- add belows for these dependencies version is not 4.0.0 when automatically generated -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>4.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-remote-driver</artifactId>
        <version>4.0.0</version>
    </dependency>