【发布时间】:2015-07-19 00:47:01
【问题描述】:
我有一组三个测试用例,我想避免保持打开多个浏览器窗口,因为我在 Selenium 中自动化了这个过程。有没有办法在每个测试用例完成后关闭浏览器而不报错?
使用 close() 和 quit() 都会给我错误代码 1。
【问题讨论】:
-
发布您启动浏览器并尝试关闭它的示例代码。
我有一组三个测试用例,我想避免保持打开多个浏览器窗口,因为我在 Selenium 中自动化了这个过程。有没有办法在每个测试用例完成后关闭浏览器而不报错?
使用 close() 和 quit() 都会给我错误代码 1。
【问题讨论】:
我们使用以下方法来处理这些问题。
1) 创建一个基类,它具有 beforeSuite 、 beforeTest 、 afterTest 、 afterSuite 方法,这些方法将始终运行。
2) 每个测试计划都应该扩展这个类来创建驱动和关闭驱动。
BasePage.java
package com.test.test3;
import java.lang.reflect.Method;
import java.util.Date;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
public class BasePage {
public WebDriver driver = null;
private Date start;
/*
* Below method will initialize the driver once test method started
* execution
*/
public void initializeDriver(WebDriver driver) {
this.driver = driver;
}
/*
* Below method will kill driver
*/
public void tearDown() {
if (this.driver != null) {
this.driver.quit();
}
}
@AfterMethod(alwaysRun = true)
public void afterTestMethod(Method method) {
// Clean ups for test level services
tearDown();
}
@AfterSuite(alwaysRun = true)
public void afterTestSuite() {
tearDown();
}
}
Testplan.java
package com.test.test3;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
public class TestPlan extends BasePage{
@Test(groups = { "test"})
public void test() {
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
System.out.println("TestAutomation test");
}
@Test(groups = { "test"})
public void test1() {
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
System.out.println("TestAutomation test");
}
@Test(groups = { "test"})
public void test2() {
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
System.out.println("TestAutomation test");
}
}
testNg.xml
<suite name="API TEST CASES">
<test name="api test" parallel="methods">
<groups>
<run>
<include name="test" />
</run>
</groups>
<classes>
<class name="com.test.test3.TestPlan" />
</classes>
</test>
【讨论】: