TestNG - 为什么testNG记者不会打印出else语句?

时间:2015-12-16 15:57:13

标签: java selenium selenium-webdriver testng

我正在尝试检查登录表单上的提交按钮是否按下了正确的详细信息。我还想检查登录详细信息何时无法向NGreporter打印登录失败的消息。我的代码如下:

WebElement  login = driver.findElement(By.id("dijit_form_Button_1_label"));

Assert.assertTrue(login.isDisplayed());

if(login.isDisplayed()){
  login.click();
  Reporter.log("Login Form Submitted  | ");
} else { 
  Reporter.log("Login Failed  | ");
}

当输入正确的详细信息时,它将打印登录表单提交给报告者,但是,当它失败时,它不会打印登录失败给报告者。

也许我正在使用isDisplayed错误地检查提交成功与否的天气?

1 个答案:

答案 0 :(得分:4)

else块永远不会执行的原因是因为Assert.assertTrue(...)login.isDisplayed()为false时抛出AssertionError。因此,当login.isDisplayed()为false时,永远不会到达if-else块,只有当它为真时(在这种情况下只执行if部分)。

实现目标的最快捷方式是将断言行移动到 if-else块下面,如下所示:

WebElement  login = driver.findElement(By.id("dijit_form_Button_1_label"));

if(login.isDisplayed()){
  login.click();
  Reporter.log("Login Form Submitted  | ");
} else { 
  Reporter.log("Login Failed  | ");
}

Assert.assertTrue(login.isDisplayed());

如果你想避免两次声明login.isDisplayed()返回true,那么你可以在你的else块中使用Assert.fail()

WebElement  login = driver.findElement(By.id("dijit_form_Button_1_label"));

if(login.isDisplayed()){
    login.click();
    Reporter.log("Login Form Submitted  | ");
} else {
    Reporter.log("Login Failed  | ");
    Assert.fail("Login was not displayed");
}