如何使用两个条件正确执行WebDriverWait

时间:2015-05-18 15:26:49

标签: java selenium

我创建了代码:

new WebDriverWait(driver,100).until(
    new ExpectedCondition<Boolean>(){

        @Override
        public Boolean apply(WebDriver driver){

            if(driver.findElement(byLogin).isDisplayed()){

                System.out.println("test1");
                return true;
            }
            else if(driver.findElement(byConc).isEnabled()){
                System.out.println("test1");
                driver.findElement(byShop).click();
                return true;
            }
            return false;
        }
    }
);

“else if”之后的代码永远不会执行。我怎样才能使正确的ExpectedCondition具备上述两个条件?

1 个答案:

答案 0 :(得分:3)

如果需要同时满足这两个条件,则returnif块中不能else if。而是有另一个boolean变量和返回,可以从两个代码块中覆盖。

new WebDriverWait(driver,100).until(
    new ExpectedCondition<Boolean>(){
        boolean ind = false;

            @Override
            public Boolean apply(WebDriver driver){

                if(driver.findElement(byLogin).isDisplayed()){

                    System.out.println("test1");
                    ind = true;
                }
                else if(driver.findElement(byConc).isEnabled()){
                    System.out.println("test1");
                    driver.findElement(byShop).click();
                    ind = true;
                }
                else{
                    ind = false;
                }
                return ind;
            }
        }
);