【发布时间】:2019-07-22 12:51:41
【问题描述】:
当我通过 TestNG XML 执行 TestNG 套件时,我观察到以下错误。
严重:org.apache.commons.exec.ExecuteException:进程退出 一个 错误:-1073741502(退出值:-1073741502) 配置失败:@BeforeMethod 初始化测试 org.openqa.selenium.WebDriverException:等待驱动程序服务器启动超时。 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'PDC2LAP-7173253',ip:'10.170.10.178',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0', java.version: '1.8.0_162' 驱动程序信息:driver.version:ChromeDriver 在 org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:202) 在 org.openqa.selenium.remote.service.DriverService.start(DriverService.java:188) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:181) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:168) 在 org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:123) 在 testclasses.BaseClass.initializetest(BaseClass.java:25) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 在 org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510) 在 org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211) 在 org.testng.internal.Invoker.invokeMethod(Invoker.java:585) 在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) 在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) 在 org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 在 org.testng.TestRunner.privateRun(TestRunner.java:774) 在 org.testng.TestRunner.run(TestRunner.java:624) 在 org.testng.SuiteRunner.runTest(SuiteRunner.java:359) 在 org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) 在 org.testng.SuiteRunner.run(SuiteRunner.java:261) 在 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1191) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1116) 在 org.testng.TestNG.run(TestNG.java:1024) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) 原因:org.openqa.selenium.net.UrlChecker$TimeoutException: 等待 [http://localhost:33768/status] 可用时超时 20001 毫秒后 在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100) 在 org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:197) ... 35 更多 引起:java.util.concurrent.TimeoutException 在 java.util.concurrent.FutureTask.get(FutureTask.java:205) 在 com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:156) 在 org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75) ... 36 更多
10-12 次测试的测试最初运行顺利,但后来因上述错误消息而失败。我希望这是配置版本的一些问题,但我无法找到它。
项目有以下 POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>PageObjects</groupId>
<artifactId>CustomerPortal</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>CustomerPortal</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.aventstack/extentreports -->
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>4.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.relevantcodes/extentreports -->
<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-api -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.8</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Java 版本是 Java 版本“1.8.0_201”。 Chrome 驱动程序 2.43.600210。请帮助我解决这个问题,因为测试突然失败导致整个自动化脚本不稳定。
TestNG 组织如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="CustomerPortalTestSuite-SIT2">
<test thread-count="5" name="CustomerPortalTestExecution">
<classes>
<class name="testclasses.CustomerPortalSupportTest"/>
<class name="testclasses.CustomerPortalAccountTest"/>
<class name="testclasses.CustomerPortalBillingTest"/>
<class name="testclasses.CustomerPortalHomeTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
下面是@BeforeMethod和@AfterMethod写的代码,
@BeforeMethod
public void initializetest() {
System.setProperty("webdriver.chrome.driver", "C:\\Downloads\\ChromeDriverLatest\\chromedriver.exe");
driver =new ChromeDriver();
wait = new WebDriverWait(driver,10);
}
@AfterMethod
public void endTest() throws IOException, Exception {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("c:\\SeleniumScreenshots\\" + count +".jpg"));
count++;
Thread.sleep(5000);
driver.quit();
driver=null;
}
下面的测试类示例:
@DataProvider(name="editAccDetails")
public Object[][] logincreds(){
Object[][] data = new Object[1][2];
data[0][0] = "test";
data[0][1] = "test";
return data;
}
@Test(priority=1, dataProvider="editAccDetails")
public void Details(String UsernameDP, String PasswordDP) throws Exception {
Login TS1 = new Login(driver,wait);
TS1.test(UsernameDP, PasswordDP);
HomePage TS2 = new HomePage(driver,wait);
TS2.test();
AccountPages TS3 = new AccountPages(driver,wait);
TS3.Details();
}
【问题讨论】:
-
分享你的完整Java测试类
-
在@waqar 上方添加
-
BaseClass.java 的第 25 行是什么?
-
driver=new ChromeDriver();在我的代码的第 25 行。 @waqar
-
请添加完整的类代码。
标签: java selenium google-chrome testng selenium-chromedriver