Selenium 4 : Getting java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;

Selenium 4 : Getting java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;

我在 chrome 97 中使用 selenium“4.1.2”。当 select 使用 select class 从下拉列表中获取值时,出现异常:

java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;

以下是我项目中的依赖项:

                    ext {
                selenium = '4.1.2'
                webdrivermanager = '5.0.3'
            }
            dependencies {
                compile("org.seleniumhq.selenium:selenium-java:${selenium}")
            //    compile("io.github.bonigarcia:webdrivermanager:${webdrivermanager}")
                testImplementation "org.seleniumhq.selenium:selenium-chrome-driver:${selenium}"
                testImplementation "org.seleniumhq.selenium:selenium-firefox-driver:${selenium}"
                testImplementation "org.seleniumhq.selenium:selenium-ie-driver:${selenium}"
                testImplementation "org.seleniumhq.selenium:selenium-edge-driver:${selenium}"
                testImplementation "org.seleniumhq.selenium:selenium-safari-driver:${selenium}"
                testImplementation "org.seleniumhq.selenium:selenium-remote-driver:${selenium}"
                testImplementation "org.seleniumhq.selenium:selenium-support:${selenium}"
                testImplementation('org.junit.jupiter:junit-jupiter:5.5.1')
                testImplementation 'org.hamcrest:hamcrest:2.1'
                testImplementation 'org.hamcrest:hamcrest-library:2.1'
                testCompile("org.junit.jupiter:junit-jupiter-api:5.7.2")
                testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.7.2'
                testRuntime("org.junit.platform:junit-platform-launcher:1.7.2")
                testCompile('io.github.bonigarcia:selenium-jupiter:3.3.4')
                compile group: 'io.qameta.allure', name: 'allure-junit5', version: '2.11.0'
                compile group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.16'
                implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.1'
                implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.17.1'
                compile group: 'io.qameta.allure', name: 'allure-gradle', version: '2.7.0'
                compile 'org.apache.maven.plugins:maven-surefire-plugin:2.21.0'
                compile('com.assertthat:selenium-shutterbug:1.5')
                compile 'org.slf4j:slf4j-nop:1.7.25'
                implementation group: 'javax.mail', name: 'mail', version: '1.4.7'
                implementation group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2'
                runtimeClasspath group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2'
                compile group: 'net.lightbody.bmp', name: 'browsermob-core', version: '2.1.4'
                compile group: 'org.postgresql', name: 'postgresql', version: '42.2.14'
                compile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.12.4'
                compile group: 'ru.yandex.qatools.ashot', name: 'ashot', version: '1.5.4'
                implementation group: 'org.json', name: 'json', version: '20201115'
                implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
                testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.7.2'
                testImplementation group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.7.2'
                testImplementation group: 'org.junit.platform', name: 'junit-platform-surefire-provider', version: '1.3.2'

            }

非常感谢任何解决此问题的帮助。

这个错误信息...

java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;

...是依赖版本冲突的结果


深入探讨

根据 @titusfortner comment in the discussion you need to crosscheck that everything related to Selenium is set to 4.x and that nothing that requires Selenium 3.x (e.g., Appium 7) is included in your dependencies as @asolntsev in the comment 提到:

All implementations of do override method getDomAttribute(). It never throws UnsupportedOperationException in real life.


解决方案

您需要执行 mvn dependency:treegradle dependencies 并且您将能够将问题跟踪为example.

中描述