无法运行TestNG测试。获取错误:java.lang.NoSuchMethodError:org.openqa.selenium.chrome.ChromeDriverService $ Builder.usingDriverExecutable

时间:2017-04-22 06:24:27

标签: selenium selenium-webdriver automated-tests selenium-chromedriver headless-browser

我正在使用下面提到的工具实施无头镀铬浏览器测试:

  • Ubuntu14.04LTS。
  • chrome浏览器(58版本最新)
  • chromedriver binary。(2.29最新)
  • Xvfb(适用于无头Chrome)
  • jdk 1.8.0_28
  • TestNG的。
  • 分别需要jar文件selenium-java-2.53.0,selenium-chromedriver-2.26.0和testng-6.9.9 jar文件。

我的完整设置在我的本地工作完全正常,但是当我在另一台服务器上执行全新设置时,它不起作用,并在初始化ChromeDriverService构建可执行文件时显示以下异常。我收到了下面提到的错误:

Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.chrome.ChromeDriverService$Builder.usingDriverExecutable(Ljava/io/File;)Lorg/openqa/selenium/remote/service/DriverService$Builder;
    at utilities.Testing.main(Testing.java:46)

导致错误的代码行是:

chromeDriverService = new ChromeDriverService.Builder()
                    .usingDriverExecutable(new File("/home/ubuntu/chromedriver")).usingAnyFreePort()
                    .withEnvironment(ImmutableMap.of("DISPLAY", ":1")).build();

我尝试在服务器上降级chromedriver和chrome浏览器版本,但它仍然不起作用。我正在编译所有jar文件的classpath,它没有显示任何编译错误。但是它仅在chromeDriverService对象初始化期间显示错误。我的系统上的jdk版本是1.8.0_111,在服务器上是1.8.0_28,我想这不是jdk版本的主要区别,因为testcripts代码不起作用。

请帮助我找出我的问题的解决方案,因为我无法找到为什么我的整个工作测试脚本代码转移到另一个系统时不适用于相同安装和依赖的新系统。还建议我chromedriver和chromebrowser特定版本相互协作,不会给我带来问题。请帮忙!!!

2 个答案:

答案 0 :(得分:0)

看来应用程序找不到服务器机器中的jar。您是否将它们添加到类路径(java -cp)并且所有路径都正确?

答案 1 :(得分:0)

为什么不尝试使用Maven将所有selenium,TestNG,WebDriver作为依赖项添加到POM.xml文件中,让工具为您下载所有必需的jar而不是手动执行