This test is executed all the way end though verifyKrGlobalHeaderProductDescriptionAndSDS
method found NoSuchElementException
. This is want I want exactly. But test status is passed but I want it be failed.
Is it possible to Fail Entire test when one of the step has gone to 'NoSuchElementException' exception?
Code:
@Story("Story 1 - Global Header on every Page - corteva.co.kr")
@Test(description = "Global Header on Home page - corteva.co.kr", dependsOnMethods = { "verify_GoToKrHomePageMethod" })
@Description("Verify whether Global Header is appearing properly on Home page")
@Severity(SeverityLevel.CRITICAL)
@Parameters({ "baseURL" })
public void verify_HomePageGlobalHeaderMethod(Method method, String baseURL) {
Log.info(method.getName() + " test is started.");
KrHomePage krHomePage = new KrHomePage(prop, driver, wait);
KrGlobalPage krGlobalPage = new KrGlobalPage(prop, driver, wait);
krHomePage.goToKrCortevaHomePage(baseURL);
krGlobalPage.verifyKrGlobalHeaderClassName();
krGlobalPage.verifyKrToplineClassName();
krGlobalPage.verifyKrGlobalHeaderLogo(baseURL);
try{
krGlobalPage.verifyKrGlobalHeaderProductDescriptionAndSDS(baseURL);
}catch(NoSuchElementException e){
e.printStackTrace();
Allure.step("No ProductDescriptionAndSDS", Status.FAILED);
}
krGlobalPage.verifyKrGlobalHeaderCortevaAgriscienceGlobal(baseURL);
krGlobalPage.verifyKrGlobalHeaderCountrySelector(baseURL);
krGlobalPage.verifyKrGlobalHeaderSearch();
}
@Step("Verify Global Header - ProductDescriptionAndSDS")
public void verifyKrGlobalHeaderProductDescriptionAndSDS(String baseURL) {
SoftAssert softAssertion= new SoftAssert();
try{
isDisplayed(By.xpath(hL1Xpath));
softAssertion.assertEquals(getAttribute("href", (By.xpath(hL1Xpath))), baseURL + "labels-and-safety-data-sheets.html", "ProductDescriptionAndSDS on Header is pointed to incorrect URL.\n\n");
}catch(NoSuchElementException e){
e.printStackTrace();
}
}
public Boolean isDisplayed(By elementLocation) {
return driver.findElement(elementLocation).isDisplayed();
}
You can use soft assertions to fail test and Allure.step("Failed step", Status.FAILED);
can be helpful to navigate throw steps in report.
Despite the fact, that it is not a best practice or good solution, you can try code below:
private SoftAssert softAssertion = new SoftAssert();
@Story("Story 1 - Global Header on every Page - corteva.co.kr")
@Test(description = "Global Header on Home page - corteva.co.kr", dependsOnMethods = { "verify_GoToKrHomePageMethod" })
@Description("Verify whether Global Header is appearing properly on Home page")
@Severity(SeverityLevel.CRITICAL)
@Parameters({ "baseURL" })
public void verify_HomePageGlobalHeaderMethod(Method method, String baseURL) {
Log.info(method.getName() + " test is started.");
KrHomePage krHomePage = new KrHomePage(prop, driver, wait);
KrGlobalPage krGlobalPage = new KrGlobalPage(prop, driver, wait);
krHomePage.goToKrCortevaHomePage(baseURL);
krGlobalPage.verifyKrGlobalHeaderClassName();
krGlobalPage.verifyKrToplineClassName();
krGlobalPage.verifyKrGlobalHeaderLogo(baseURL);
krGlobalPage.verifyKrGlobalHeaderProductDescriptionAndSDS(baseURL);
krGlobalPage.verifyKrGlobalHeaderCortevaAgriscienceGlobal(baseURL);
krGlobalPage.verifyKrGlobalHeaderCountrySelector(baseURL);
krGlobalPage.verifyKrGlobalHeaderSearch();
softAssertion.assertAll();
}
@Step("Verify Global Header - ProductDescriptionAndSDS")
public void verifyKrGlobalHeaderProductDescriptionAndSDS(String baseURL) {
try {
isDisplayed(By.xpath(hL1Xpath));
softAssertion.assertEquals(getAttribute("href", (By.xpath(hL1Xpath))), baseURL + "labels-and-safety-data-sheets.html", "ProductDescriptionAndSDS on Header is pointed to incorrect URL.\n\n");
} catch(NoSuchElementException e){
Allure.step("No ProductDescriptionAndSDS", Status.FAILED);
softAssertion.assertTrue(false, "No ProductDescriptionAndSDS");
e.printStackTrace();
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.