我有两个测试用例 - “Signup.java”,“Login.java”。
Login.java
public class Login extends BaseTest{
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "www.xyz.com";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
@Test
public void testLogin() throws Exception {
driver.get(baseUrl);
WebElement username=driver.findElement(By.id("username"));
username.sendKeys(user);
driver.findElement(By.id("password")).sendKeys(pwd);
driver.findElement(By.xpath("//div[4]/div/button")).click();
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
SignUp.java
public class SignUp extends BaseTest{
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "www.xyz.com";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testSignUp() throws Exception {
driver.get(baseUrl+"/");
driver.findElement(By.id("firstname")).sendKeys("test");
driver.findElement(By.id("lastname")).sendKeys("test");
driver.findElement(By.id("password")).sendKeys("test");
driver.findElement(By.id("confirmPassword")).sendKeys("test");
driver.findElement(By.id("email")).sendKeys("test@gmail.com");
driver.findElement(By.name("accepted_tandc")).click();
driver.findElement(By.xpath("//button[contains(.,'Submit')]")).click();
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
}
BaseTest.java
public abstract class BaseTest {
protected String user="xyz@gmail.com";
protected String pwd="123";
public static String baseUrl;
protected static WebDriver driver;
private static StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public static void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "www.xyz.com";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@AfterClass
public static void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
}
拥有一个名为AllTests.java的测试套件
@RunWith(Suite.class)
@SuiteClasses({SignUp.class,Login.class,})
public class AllTests {
}
现在当我运行AllTests.java时首先它将打开浏览器并运行第一个测试用例然后关闭浏览器。然后打开浏览器执行第二个测试用例。
我的问题是当我运行测试套件时,浏览器需要在执行所有测试后关闭。无需打开/关闭所有测试用例的浏览器。首先打开浏览器并执行注册,然后执行登录然后关闭。这是我需要的程序。
感谢。
答案 0 :(得分:1)
使用BeforeSuite
和AfterSuite
分别打开驱动程序和关闭驱动程序。并在BeforeClass
中检查驱动程序实例是否已初始化,如果在套件中运行,则会在BeforeClass
中初始化。添加一些变量,您可以使用它来了解您是否在套件中运行并使用它来决定是否在Afterclass
中关闭浏览器。如果它在套件中运行不要关闭它,否则关闭它。
答案 1 :(得分:0)
我使用Selenide作为Selenium的包装器,你永远不必使用driver.quit()并且浏览器保持打开状态,只有在我的所有测试用例都完成后它才会关闭。
我建议从你的拆解中删除driver.quit()。