有人可以推荐在@AfterClass 中使用testng 'tearDown' 的最佳方法吗?我偶尔会收到一个挂起的窗口或弹出窗口,并且无法返回主页以优雅地注销以开始下一个课程并避免模态对话框错误。
我尝试在主页上获取窗口句柄,然后在弹出窗口中获取一个窗口句柄,然后在我的 @AfterClass 中放置一个 switchTo ,但它不起作用。我也尝试过 driver.close()。但随后我的下一堂课将因无法访问的浏览器错误而被跳过。
我真的需要一个好的tearDown @AfterClass 方法,它可以摆脱页面上的任何错误和弹出窗口,并在登录页面留下一个干净的浏览器窗口,以便下一个测试类运行。
编辑:添加代码:
package TestPackage;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
import org.testng.annotations.Test;
//@Test (priority = 1)
public class test1 {
public static WebDriver driver = new FirefoxDriver();
Environment environment = Environment.QA03();
User testUser = User.ns_system();
AxUtilities axUtilities;
@BeforeClass
@Parameters("environment")
@Test
public void login(String environment1){
// environment = new Environment(environment1);
axUtilities = new DAxUtilities(environment1, driver);
// DAxUtilities dAxUtilities = new DAxUtilities(environment);
Login login = new Login();
login.getLogin(testUser, axUtilities, driver);
axUtilities.sleep(5000);
}
@Test
public void testNothing(){
String s = "public void testNothing() reached...";
System.out.println(s);
}
@AfterClass
public void verifyOKAndLogout() {
driver.quit();
// DAxUtilities dAxUtilities;
}
}
测试类 1 和 2 是相同的除了类名...
并且测试是从 xml 文件运行的。而且我尝试了 xml 文件的许多变体,甚至将每个测试放在自己的 xml 文件中:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestSuite1" verbose="1">
<parameter name="environment" value="QA03"/>
<test name="Test1">
<classes>
<class name="TestPackage.test1"/>
<!--<class name="TestPackage.test2"/>-->
</classes>
</test>
<test name="Test2">
<classes>
<class name="TestPackage.test2"/>
</classes>
</test>
</suite>
但是总是会创建两个 Web 驱动程序,一个接一个,在测试运行的最开始,在执行任何其他代码之前。断点显示代码肯定会从第 1 类的开头跳过到第 2 类的开头,然后再运行第 1 类测试...