首页 > 解决方案 > 如果 selenium webdriver 中的条件问题

问题描述

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

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();
    }

标签: seleniumselenium-webdriverautomated-tests

解决方案


我认为你在写的地方有错字,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();
    }

推荐阅读