java.lang.NoSuchMethodError:org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;使用PhantomJS 2.1.1和Selenium时

java.lang.NoSuchMethodError:org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;使用PhantomJS 2.1.1和Selenium时,selenium,selenium-webdriver,webdriver,phantomjs,Selenium,Selenium Webdriver,Webdriver,Phantomjs,操作系统-Windows7 PhantomJS版本-2.1.1 Selenium-3.8.1(Selenium服务器) JDK-152 我正在尝试使用PhantomJS运行简单测试: 1) 正在初始化驱动程序: System.setProperty("phantomjs.binary.path","src\\main\\resources\\phantomjs.exe"); WebDriver driver = new PhantomJSDriver(); 2) 任何测试,让它验证en.wik

操作系统-Windows7

PhantomJS版本-2.1.1

Selenium-3.8.1(Selenium服务器)

JDK-152

我正在尝试使用PhantomJS运行简单测试:

1) 正在初始化驱动程序:

System.setProperty("phantomjs.binary.path","src\\main\\resources\\phantomjs.exe");
WebDriver driver = new PhantomJSDriver();
2) 任何测试,让它验证en.wikipedia.org上的文本“欢迎”:

driver.get("http://en.wikipedia.org");
System.out.println(driver.findElement(By.xpath("//div[contains(text(),'Welcome')]")).isDisplayed());
3) 正在运行测试,但收到错误:

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)
线程“main”java.lang.NoSuchMethodError中的异常:org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String; 位于org.openqa.selenium.phantomjs.PhantomJSDriverService.findPhantomJS(PhantomJSDriverService.java:232) 位于org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:181) 位于org.openqa.selenium.phantomjs.PhantomJSDriver(PhantomJSDriver.java:104) 位于org.openqa.selenium.phantomjs.PhantomJSDriver(PhantomJSDriver.java:94) 谷歌显示,此类问题时有发生(不兼容的selenium/PhantomJS)。 问:有没有办法让最后的selenium和2.1.1 PhantomJS成为好朋友


注意:任何其他驱动程序都可以正常工作(edge、chrome、ff)。

您看到的错误说明了一切:

NoSuchMethodError: org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;
NoSuchMethodError
根据Java文档进行扩展,如果应用程序试图调用类(静态或实例)的指定方法,并且该类不再具有该方法的定义,则会抛出该方法。通常,编译器会捕获此错误,并且只有在类的定义发生不兼容的更改时,才会在运行时发生此错误

解决方案 执行以下步骤:

  • 将您的JDK更新到最新版本(
    Java8更新151
  • 从IDE中清理
    项目空间
  • 运行
    CCleaner
    工具以清除所有操作系统杂务
  • 重新启动系统
  • 仅添加SeleniumJava客户端v3.8.1jar
  • 在使用PhantomJSDriver(GhostDriver)时,需要添加以下Maven依赖项:

  • 执行您的
    测试


只是为了添加一个不同的场景,其中可能会遇到相同的异常

使用Eclipse时,以下代码正在运行:

File file = new File("C://phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
WebDriver driver = new PhantomJSDriver();
在使用Intellij时,上述代码抛出了问题中提到的错误

但以下内容适用于Intellij:

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:\\phantomjs.exe");

WebDriver driver = new PhantomJSDriver(capabilities);

注意:别忘了更改exe路径。

你能用你的Selenium/WebDriver/Browser版本和你的代码试用版来更新这个问题吗?问题更新了。在1.4.0中效果很好,谢谢!只需注意:不知道为什么,但在我的机器上,从com.github.detro更新时遇到了问题。来自com.codeborne-无问题。
File file = new File("C://phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
WebDriver driver = new PhantomJSDriver();
DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:\\phantomjs.exe");

WebDriver driver = new PhantomJSDriver(capabilities);