Ввод выхода из системы @AfterMethod
будет хорошо, но убедитесь, что вы делаете это эффективным способом.
- проверить выход из системы, если только тест не пройден
- избегайте использования try catch, потому что он ожидает в течение заданного времени (ImplicitWait), чтобы проверить наличие элемента, а затем переходит в блок catch вместо использования List
см. Код ниже, используя @AfterMethod
@AfterMethod
public void screenShot(ITestResult result){
if(ITestResult.FAILURE==result.getStatus()){
List<WebElement> username = driver.findElement(By.locator); // element which displays if user is logged in
if(!username.isEmpty())
// steps to logout will go here
}
}
}
Еще одна альтернатива - вы можете использовать TestNG Listener. реализовать ITestListener
в классе и переопределить метод onTestFailure
, как показано ниже
@Override
public void onTestFailure(ITestResult result) {
if(ITestResult.FAILURE==result.getStatus()){
List<WebElement> username = driver.findElement(By.locator); // element which displays if user is logged in
if(!username.isEmpty())
// steps to logout will go here
}
}
}
добавить тег ниже в testng.xml
<listeners>
<listener class-name="com.pack.listeners.TestListener"/> // your created class name with package which implemented ITestListener
</listeners>