I am using selenium “4.1.2” with chrome 97. While selecting value from drop down using select class, getting exception:
java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;
Below are dependencies in my project:
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' }
Any help in resolving this issue is highly appreciated.
Advertisement
Answer
This error message…
java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;
…is the result of dependency version conflict.
Deep Dive
As per @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 mentions:
All implementations of WebElement do override method
getDomAttribute()
. It never throws UnsupportedOperationException in real life.
Solution
You need to execute mvn dependency:tree
or gradle dependencies
and you will be able to trace the problem as described in this example.