为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试执行以下 if else 条件,但 else 部分未执行 'if' 条件不满足

我正在尝试执行以下 if else 条件,但 else 部分未执行 'if' 条件不满足

临摹微笑 2021-10-20 16:07:57
在下面的代码中,如果登录成功,它应该在控制台中打印“登录通过”。如果失败,它应该打印输入错误凭据的用户。如果登录失败,它工作正常。但是当登录成功时else 部分不会被执行。请帮我找出我做错的地方。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"}
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

有两种方法可以执行 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)并检查它的大小。如果大小为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"); 

        }


查看完整回答
反对 回复 2021-10-20
?
大话西游666

TA贡献1817条经验 获得超14个赞

当 Selenium 找不到与您提供的路径对应的元素时,它会抛出 NoSuchElement 异常。

使用 try catch 并处理这种情况。


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信