首页 > 解决方案 > 我正在尝试执行以下 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"}

标签: javaselenium

解决方案


有两种方法可以执行 if-else 阶梯。

  1. 您可以使用 try catch 块并将代码与SeleniumisDisplayed()中存在的方法集成。

就像是 :

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");  
}
  1. 使用列表(在此处存储无效凭据 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"); 
        }

推荐阅读