我正在尝试检查登录表单上的提交按钮是否按下了正确的详细信息。我还想检查登录详细信息何时无法向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错误地检查提交成功与否的天气?
答案 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");
}