NoSuchMethodError:com.google.common.base.Preconditions.checkState(ZLjava / lang / String;)时,使用ChromeDriver和Chrome通过CLI执行测试

时间:2018-08-07 14:28:05

标签: java google-chrome selenium selenium-webdriver selenium-chromedriver

我有一个TestNG测试,当在Eclipse中作为TestNG Suite运行时,它可以按预期工作,但是在通过命令行运行时失败。我看到它无法启动浏览器但无法正常运行的问题,因为我只是在没有网络驱动程序代码的情况下打印helloworl。任何人都可以帮助我在这里找不到的信息

package testngex;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.Test;

public class Login {

    @Test

    public void main() {

        WebDriver driver=new ChromeDriver();
        driver.manage().window().maximize();
        //Implicit wait
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
           driver.get("url");
        driver.findElement(By.id("Username")).sendKeys("xxx");
        driver.findElement(By.id("Password")).sendKeys("xxx);
        driver.findElement(By.id("imgbtnLogin")).click();
        driver.quit();

    }
}

XML文件

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="Suite">
  <test thread-count="5" name="Test">
    <classes>
      <class name="testngex.Login"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

错误测试

testngex.Login#main
Exception
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
  at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:125)
  at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35)
  at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:156)
  at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:346)
  at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:91)
  at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
  at testngex.Login.main(Login.java:17)
... Removed 24 stack frames

2 个答案:

答案 0 :(得分:1)

使用Maven Surefire插件。并使用模式使其像这样识别您的测试类...

mvn -Dtest=test* test

答案 1 :(得分:0)

此错误消息...

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V

...暗示 JVM 无法找到必要的 WebDriver 变体,即 ChromeDriver 以启动新会话。

您的主要问题是,您没有在 JVM 中提及 ChromeDriver 的位置。因此是错误。

解决方案

在代码的开头添加System.setProperty()行:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
WebDriver driver = new ChromeDriver();