如果测试失败,如何使用 Selenium WebDriver 在 TestNG 中重试测试?
我使用了retryAnalyser
。它有效,但不是我想要的方式。我想实例化 Web 驱动程序的一个新实例:“从测试的开头开始测试用例”。
请注意,Web 驱动程序的实例化位于 @BeforeClass
中。此@BeforeClass
与@Test
类不在同一类中。它位于另一个类中。具有 @Test
的类继承具有 @BeforeClass
和所有其他注释的类。
准确地说,这里是一个示例模型:
public class A {
@BeforeClass(alwaysRun = true)
public void setUp() {
driver = new InternetExplorerDriver();
driver.get(C.getURL());
driver.switchTo().frame("top_frame");
driver.manage().window().maximize();
}
@AfterClass(alwaysRun = true)
public void tearDown(ITestContext textContext) throws IOException {
report.flush();
driver.quit();
}
}
//这是测试类
@Test(retryAnalyzer = StartWebDriver.class)
public class TestCase extends StartWebDriver{
@Test(testName = "Login to Application ")
public void loginTestCase() {
login.setUserName(C.getUSER_NAME());
login.setPassword(C.getPASSWORD());
login.clickLogin();
deskTopMenu.newClaimClick();
Assert.assertTrue(findPolicyPage.searchButton().isDisplayed());
}
}
请注意,我已经编写了一个重试分析器类并重写了它的方法。我只是没有输入示例代码。现在,我已经尝试了很多事情但没有成功。
例如,我已将注释移至类级别而不是测试级别。我还在类 A
中创建了它,例如:
@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) {
for (ITestNGMethod method : context.getAllTestMethods()) {
method.setRetryAnalyzer(new StartWebDriver());
}
}
但是所有这些都没有实例化驱动程序。它只是从测试步骤离开的地方重新开始。在进入下一个测试之前我需要重新开始。请注意,每个类(class)都有一个测试。
最佳答案
您可以更改驱动程序实例化逻辑,例如:
public class A {
@BeforeMethod(alwaysRun = true)
public void setUp() {
if (driver = null) {
driver = new InternetExplorerDriver();
driver.get(C.getURL());
driver.switchTo().frame("top_frame");
driver.manage().window().maximize();
}
}
@AfterMethod(alwaysRun = true)
public void afterMethod(ITestResult result) {
if (result.getStatus() = FAILURE) {
driver.quit();
driver = null;
}
}
@AfterClass(alwaysRun = true)
public void tearDown(ITestContext textContext) throws IOException {
report.flush();
if (driver != null) {
driver.quit();
}
}
}
步骤是:
- 创建驱动程序(如果尚未完成)
- 运行测试
- 如果测试失败,请删除驱动程序
注意:如果重试分析器时未调用@BeforeMethod
,您可以保留之前的@BeforeClass
方法并在中创建新的驱动程序@AfterMethod
方法。只需创建一个驱动程序创建方法即可避免在这种情况下出现代码重复。
关于java - 如何使用 TestNG RetryAnalyzer 调用新实例驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863111/