使用selenium+Java,在执行web自动化测试用例的时候,每次都要打开关闭浏览器。下面介绍一个简单的方法,利用TestNG,在执行用例时只启动关闭一次浏览器。简单的说一下思路,首先定义一个基础类,把启动浏览器放在@BeforeSuite中,将关闭浏览器放在@AfterSuite中;在基础类中,通过关键字static定义webdriver driver为全局应用对象,则此driver可以在所有类中使用;其他class脚本中去掉启动、关闭浏览器操作,通过直接引用基础类中的driver来操作网页。具体示例如下:
1、基础class
import org.testng.annotations.BeforeSuite;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterSuite;
public class OpenBrowserOnce {
public static WebDriver driver;
@BeforeSuite
public void beforeSuite() {
// 指定谷歌浏览器驱动的路径
System.setProperty("webdriver.chrome.driver", "D:\\Webdriver\\chromedriver.exe");
//创建一个叫driver的对象,启动chrome浏览器
driver = new ChromeDriver();
//浏览器窗口最大化
driver.manage().window().maximize();
}
@AfterSuite
public void afterSuite() {
//退出浏览器
driver.quit();
}
}
2、测试用例编写(这里列举一个打开百度首页的例子)
import org.testng.annotations.Test;
import org.openqa.selenium.WebDriver;
public class OpenChromeNewTest {
public static WebDriver driver;
@Test
public void OpenChrome() throws InterruptedException {
//引用共有类型中的变量
driver = OpenBrowserOnce.driver;
//打开网址
driver.get("http://www.baidu.com");
}
}
3、创建TestNG测试套件(这里需要把创建的基础类手动加进来)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="5" name="Test">
<classes>
<class name="OpenOnce.OpenBrowserOnce"/>
<class name="OpenOnce.OpenChromeNewTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
最后执行测试套件就OK 啦!