我已经编写了基本的 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();
}
}
答案 0 :(得分:2)
小心,TestNG不是JUnit。
JUnit @BeforeTest
由@BeforeMethod
在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将被执行。