java.lang.NoSuchMethodError:org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;使用PhantomJS 2.1.1和Selenium时
操作系统-Windows7 PhantomJS版本-2.1.1 Selenium-3.8.1(Selenium服务器) JDK-152 我正在尝试使用PhantomJS运行简单测试: 1) 正在初始化驱动程序: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
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依赖项:
- 执行您的
测试
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);