OS - Windows 7
PhantomJS version - 2.1.1
Selenium - 3.8.1(selenium-server).
JDK - 152.
I'm trying to run simple test, using PhantomJS:
1) initializing the driver:
System.setProperty("phantomjs.binary.path","src\\main\\resources\\phantomjs.exe");
WebDriver driver = new PhantomJSDriver();
2) any test, let it be verifying text "welcome" on en.wikipedia.org:
driver.get("http://en.wikipedia.org");
System.out.println(driver.findElement(By.xpath("//div[contains(text(),'Welcome')]")).isDisplayed());
3) Running test, but receiving errors:
Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;
at org.openqa.selenium.phantomjs.PhantomJSDriverService.findPhantomJS(PhantomJSDriverService.java:232)
at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:181)
at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:104)
at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:94)
Googling showed, that such troubles occur time to time (non-compatible selenium/PhantomJS). Question: is there any workaround for making last selenium(s) and 2.1.1 PhantomJS good friends?
note: any other driver works fine (edge, chrome, ff).
The error you are seeing says it all :
Class
NoSuchMethodError
NoSuchMethodError
extendsIncompatibleClassChangeError
and as per the Java Docs it is thrown if an application tries to call a specified method of a class (either static or instance), and that class no longer has a definition of that method. Normally, this error is caught by the compiler and this error can only occur at run time if the definition of a class has incompatibly changed.Solution
Perform the following steps :
JDK
to the most recent versions (Java 8 Update 151
)Project Space
from the IDE.CCleaner
tool to wipe off all the OS system chores.System Reboot
As you are using PhantomJSDriver (GhostDriver) you need to add the following Maven Dependency :
You need to update the line
System.setProperty
with the absolute path of thephantomjs
binary as follows :Execute your
Test
Just to add a different scenario where the same exception can be faced.
While using Eclipse below code was working :
While using Intellij, the same above code was throwing the error as mentioned in the question.
But the below worked with the Intellij :
Note:Dont forget to change the exe path.