一尘不染

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

selenium

操作系统-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)。


阅读 332

收藏
2020-06-26

共1个答案

一尘不染

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

NoSuchMethodError: org.openqa.selenium.os.CommandLine.find(Ljava/lang/String;)Ljava/lang/String;

NoSuchMethodError

NoSuchMethodError扩展,IncompatibleClassChangeError
并且根据 Java Docs
,如果应用程序尝试调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异常。通常,此错误由编译器捕获,并且只有在类的定义发生不兼容的更改时,此错误才会在运行时发生。

执行以下步骤:

  • 将您更新 JDK 到最新版本( Java 8 Update 151
  • Project Space 从IDE中清理。
  • 运行 CCleaner 工具以清除所有OS系统杂务。
  • 拿一个 System Reboot
  • 仅添加 Selenium-Java客户端v3.8.1 jar。
  • 在使用 PhantomJSDriver(GhostDriver)时, 您需要添加以下 Maven依赖关系
        <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
2020-06-26