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

时间:2018-10-01 09:34:28

标签: java selenium

在下面的代码中,如果登录成功,则应在控制台中显示“ Login pass”。如果失败,则应打印输入错误凭据的用户。

如果登录失败,则工作正常。但是,如果登录成功enter image description here,则其他部分将不会执行。请帮我解决我做错的地方。

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 个答案:

答案 0 :(得分:1)

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

  1. 您可以使用try catch块并将代码与 Selenium 中提供的$ nasm -f elf64 -o shell.o shell.asm $ ld -o shell shell.o $ ./shell 方法集成。

类似:

isDisplayed()
  1. 使用列表(在此处存储无效的凭据xpath)并检查其大小。如果大小为1,则肯定存在来自网页的错误消息,否则流程将转到else语句。

代码

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 :(得分:0)

Selenium无法找到与您给出的路径相对应的元素时,抛出NoSuchElement异常。

尝试抓住并处理这种情况。