java - 我正在尝试执行以下 if else 条件,但 else 部分未执行 'if' 条件不满足
问题描述
在下面的代码中,如果登录成功,它应该在控制台中打印“登录通过”。如果失败,它应该打印输入错误凭据的用户。
如果登录失败,它工作正常。但是当登录成功时,不执行其他部分。请帮我解决我做错的地方。
driver.findElement(By.xpath("//*[@id=\"btnLogin\"]")).click();
if(driver.findElement(By.xpath("/html/body/div/form/div/div/span")).getText().equals("Invalid Credential")) {
System.out.println(user);
}
else {
System.out.println("Login Passed");
}
错误:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div/form/div/div/span"}
解决方案
有两种方法可以执行 if-else 阶梯。
- 您可以使用 try catch 块并将代码与Selenium
isDisplayed()
中存在的方法集成。
就像是 :
driver.findElement(By.xpath("//*[@id="btnLogin"]")).click();
try{
if(driver.findElement(By.xpath("/html/body/div/form/div/div/span")).isDisplayed())
{
System.out.println("Invalid");
}
else{
System.out.println("Valid");
}
catch(Exception e){
System.out.println("in exception");
}
- 使用列表(在此处存储无效凭据 xpath)并检查其大小。如果 size 为 1,则网页肯定有错误消息,否则流程将转到 else 语句。
代码:
driver.findElement(By.xpath("//*[@id="btnLogin"]")).click();
if(driver.findElements(By.xpath("/html/body/div/form/div/div/span")).size()==1){
System.out.println("Invalid");
}
else {
System.out.println("Login Passed");
}
推荐阅读
- python - QWidget PaintEvent问题
- react-native - 我无法向 react-native 应用程序添加简单的图像
- javascript - 使用参数并以正确的方式显示它
- reactjs - TypeError:Object.fromEntries 不是函数
- r - ggplot2 - 按区域大小范围排序区域图
- javascript - Mat-Select 下拉菜单不适用于赛普拉斯
- angular - 排除 tsconfig.lib.json(Angular 库)中的测试文件夹
- c++ - 排序可视化 - 如何解决循环依赖?
- c# - unity2d新手代码错误参考问题
- templates - 创建体验片段并打开它时,编辑器出现两次