操作系统-Windows 7
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上验证文本“ welcome”即可:
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)
谷歌搜索表明,此类故障有时会发生(selenium/ PhantomJS不兼容)。问题:是否有任何解决方法可以结交最后的selenium和2.1.1 PhantomJS的好朋友?
注意:任何其他驱动程序都可以正常工作(edge,chrome,ff)。
您所看到的错误说明了一切:
NoSuchMethodError: org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;
NoSuchMethodError
NoSuchMethodError扩展,IncompatibleClassChangeError 并且根据 Java Docs ,如果应用程序尝试调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异常。通常,此错误由编译器捕获,并且只有在类的定义发生不兼容的更改时,此错误才会在运行时发生。
IncompatibleClassChangeError
执行以下步骤:
JDK
Java 8 Update 151
Project Space
CCleaner
System Reboot
<dependency> <groupId>com.github.detro</groupId> <artifactId>phantomjsdriver</artifactId> <version>1.4.0</version> </dependency>
System.setProperty
phantomjs
File path=new File("C:\\path\\\to\phantomjs-2.1.1-windows\\bin\\phantomjs.exe"); System.setProperty("phantomjs.binary.path",path.getAbsolutePath()); WebDriver driver= new PhantomJSDriver(); driver.navigate().to("https://www.google.co.in/");
Test