如果条件问题在硒webdriver

时间:2018-12-19 12:06:15

标签: selenium selenium-webdriver automated-tests

当我执行脚本时,总是第一个条件被执行。即便是 脚本值得第二条件。

if (driver.findElement(By.id("jSuccess")).isDisplayed())
    {
        driver.findElement(By.id("jSuccess")).click();
        System.out.println("Clockedin Successfully....");
    }
else if (driver.findElement(By.id("jError")).isDisplayed())
    {
        driver.findElement(By.id("jError")).click();
        System.out.println("User already clockedin");
    //  ul.getclockout().click();
    }

2 个答案:

答案 0 :(得分:2)

我认为您写的是 loop 而不是 condition

您可以在size上尝试findElements功能

此外,由于您使用了ifelse if,所以只有其中一个会执行

if (driver.findElements(By.id("jSuccess")).size()>0) {  
       driver.findElement(By.id("jSuccess")).click();
        System.out.println("Clockedin Successfully....");
    }
else if (driver.findElements(By.id("jError")).size()>0)  {   
        driver.findElement(By.id("jError")).click();
        System.out.println("User already clockedin");
    //  ul.getclockout().click();
    }

//如果要根据条件评估执行两个语句,则可以通过删除else

if (driver.findElements(By.id("jSuccess")).size()>0) {  
       driver.findElement(By.id("jSuccess")).click();
        System.out.println("Clockedin Successfully....");
    }
if (driver.findElements(By.id("jError")).size()>0)  {   
        driver.findElement(By.id("jError")).click();
        System.out.println("User already clockedin");
    //  ul.getclockout().click();
    }

答案 1 :(得分:0)

您正在使用if-else语句。如果if条件为true,则else将不会得到评估。如果您希望同时评估两者,请删除else并仅使用两个if

想要这样的声音...

if (driver.findElement(By.id("jSuccess")).isDisplayed())
{
    driver.findElement(By.id("jSuccess")).click();
    System.out.println("Clocked in Successfully....");
}

if (driver.findElement(By.id("jError")).isDisplayed())
{
    driver.findElement(By.id("jError")).click();
    System.out.println("User already clocked in");
}