我有一个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
答案 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();