我的硒测试用例如下:
@Test(priority = 1)
public void Check_Funnel_on_homepage() throws Exception {
try {
isElementDisplayed((By.id(propObjctRepo.getProperty("xpath_abc"))));
} catch (Exception e) {
addErrorlogs(e, "Error message");
}
}
我的测试方法如下:
@SuppressWarnings("deprecation")
public boolean isElementDisplayed(By element) throws Exception {
try {
Assert.assertTrue(dvr.findElement(element).isDisplayed());
addlogs("Element " + element + " found on page");
System.out.println("Element " + element + " found on page");
return true;
} catch (AssertionError e) {
System.out.println("Element " + element + " not found on page");
return false;
} catch (Exception e) {
System.out.println("Element " + element + " not found on page");
return false;
}
}
我面临一个问题,在每种情况下,页面上存在的元素或测试用例是否不返回true并传递testNG报告。
答案 0 :(得分:3)
如果isElementDisplayed()
返回false
,您什么也不做,您需要使用assert
public void checkFunnelOnHomepage() {
By by = By.id(propObjctRepo.getProperty("xpath_abc"));
boolean isDisplayed = isElementDisplayed(by);
Assert.assertTrue(isDisplayed, "Element " + by + " not found on page");
}
您可以将断言消息添加到assertTrue()
,并将isElementDisplayed(By element)
更改为仅返回true
或false
public boolean isElementDisplayed(By by) {
List<WebElement> elements = dvr.findElements(by);
return elements.size() > 0 && elements.get(0).isDisplayed();
}
如果您使用findElements
,请避免使用try catch
。它也是recommended way
findElement不应用于查找不存在的元素,请使用 WebDriver.findElements(由)
请谨慎使用try catch
,它将忽略断言错误。
请注意,根据Java naming conventions Check_Funnel_on_homepage
应该为checkFunnelOnHomepage
。
答案 1 :(得分:1)
这是因为您正在捕获断言错误并返回false。对返回的值不做任何事情。因此测试的最终结果是测试用例通过