请问我到底做错了什么。
我检查过并检查过但都无济于事。 我还检查了以前的代码,但我没有收到错误,所以我的代码工作正常,但在某处只是轻微的错误。
代码运行正常,assertTrue
的行为符合预期,但当我将其放入try
/ catch
时,我只获取catch块中的日志,即使文本也是如此被找到。
我相信如果assertTrue
找到了文本,它应该转到try
块中的下一行代码并传递测试而不是catch
块。不要误解我的意思,我没有收到任何错误,因为它打印出了错误的信息。
以下代码,包括在控制台中打印输出消息。
public boolean verifyTextPresent(String value) throws Exception {
Thread.sleep(5000);
try{
boolean txtFound = driver.getPageSource().contains(value);
log.log(value + " : text Found, .......continue");
return txtFound;
}catch(Exception e)
{
log.log(value + " :NOT Found, check element again ot Contact developer.");
return false;
}
}
public static void verifySignOutBtn() throws Exception
{
log.header("VERIFY IF SIGN_OUT EXIST AND CLICKABLE.........");
callMethod.myAccountPageNative(CONSTANTElements.SIGN_IN_LINK);
Thread.sleep(2000);
log.header("LOCATE SIGN_OUT BTN, AND CLICK ......");
callMethod.elementPresent_Click(By.cssSelector(CONSTANTElements.SIGN_OUT_BTN));
Thread.sleep(4000);
log.header("VERIFY SIGN_OUT NAVIGATES TO HOME PAGE WHEN CLICKED......");
try{
Assert.assertTrue(callMethod.verifyTextPresent("SIGN IN"), "SIGN IN");
log.log("User Successfully Signed Out.......");
log.log("Test Passed!...");
//callMethod.close();
}
catch(Throwable e)
{
log.log("User NOT Successfully Signed Out.... Contact developer.");
log.log("Test Failed!...");
//callMethod.close();
}
callMethod.close();
}
}
Msg in console:
SIGN IN : text Found, .......continue
User NOT Successfully Signed Out.... Contact developer.
Test Failed!...
令人困惑的部分是,为什么打印出catch
块而不是try
块中的下一行?
答案 0 :(得分:2)
不应该是相反的方式吗?
Assert.assertTrue("Message if it is false", callMethod.verifyTextPresent("SIGN IN"));
答案 1 :(得分:1)
唯一可能的解释是verifyTextPresent(String value)
返回false
(您实际上从未检查boolean txtFound
的值)并且assertTrue
失败(抛出AssertionError
在你的阻止块中处理不好)。要查找,请替换此
log.log(value + " : text Found, .......continue");
例如使用此行
log.log(value + " : text Found, ......." + txtFound);
或者只是在catch块中打印堆栈跟踪。