Selenium JAVA中的TestNG注释问题

时间:2016-04-04 07:46:00

标签: java selenium testng

我已经编写了基本的 TESTNG java selenium脚本供学习。执行test1方法后,在下面的代码中我希望关闭浏览器,因为@AfterTest将运行。但是在Test1方法Test2方法运行之后。执行两个@test方法后,浏览器正在关闭。 任何人都可以帮助我如何在每次运行后关闭浏览器 @test方法

import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;

public class Sample {

    public String baseUrl = "https://www.facebook.com/";
    public WebDriver driver = new FirefoxDriver();
    @BeforeTest
    public void beforeTest() 
      {
      driver.get(baseUrl);      
      }
    @Test
    public void test1() 
    {
      driver.get(baseUrl);
      String expectedTitle = "Facebook - Log In or Sign Up";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
    }
    @Test
    public void test2() 
    {
      driver.get(baseUrl);
      String expectedTitle = "Facebook - Log In or Sign Up";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
    }
  @AfterTest
  public void afterTest()
  {
  driver.close();
  }

}

3 个答案:

答案 0 :(得分:2)

小心,TestNG不是JUnit。

JUnit @BeforeTest@BeforeMethod在TestNG世界中翻译。

TestNG中的

@BeforeTest在一组测试方法之前。

参见http://testng.org/doc/documentation-main.html#annotations 您也可以查看Difference between BeforeClass and BeforeTest in TestNG

答案 1 :(得分:0)

本文有一个很好的并排表格,其中包含testng和junit之间的标签差异,以及每个底部的一些示例。

https://www.guru99.com/junit-vs-testng.html

此外 - 通常,您应该让每个测试完全独立于其他测试。这意味着您需要让每个测试都创建自己的浏览器/ webdriver实例。将驱动程序创建放在自己的方法中是标准的,并让它为每个测试返回一个webdriver。同样,最后你会调用一些你将你的webdriver传递给你的driver.quit()。

这样做的原因是最终你将进入多线程/同时执行,你将在测试的基础上设置测试中的线程数。

    @Test( invocationCount = 20, threadPoolSize = 5 )

最好通过创建帮助创建方法来尽早做好准备。早点清理。

答案 2 :(得分:-1)

我有一个查询方法。那就是你可以写两个注释@BeforeMethod和@AfterMethod。 I @ Before Method可以编写代码来启动应用程序,在@AfterMethod中,您可以编写查询以退出浏览器。当测试执行开始之前,测试注释将在执行@ test1方法之后执行,并且在@AfterMethod执行之后将关闭mena sbrowser。接下来的第二次@AfterMethod将被执行,@ test2将被执行并且@AfterMethod将被执行。