Selenium 3.4如何使用改变了wait.until

时间:2017-07-03 03:43:45

标签: java selenium selenium-webdriver selenium3

因此,使用Selenium 3.4,我以前工作的wait.until不能正常工作(已被新方法取代)。我似乎无法使用新方法。

我正在使用

import com.google.common.base.Function;

旧代码:

public boolean waitForURLToMatch(String expectedURL, int waitTime){
    WebDriverWait wait = new WebDriverWait(driver, waitTime);
    wait.until(EcpectedConditions.urlMatches(expectedURL));
}

新代码:

public boolean waitForURLToMatch(String expectedURL, int waitTime){
    WebDriverWait wait = new WebDriverWait(driver, waitTime);
    wait.until(new Function<WebDriver, boolean>){

        @Override
        public boolean apply(WebDriver driver) {
            return driver.getCurrentUrl().equals(expectedURL);
        }
    }
}

新代码在eclipse中有错误: Syntax error on tokens, InterfaceHeader expected instead

关于我哪里出错的任何想法?

1 个答案:

答案 0 :(得分:1)

因此,经过大量的谷歌搜索,我最终发现问题只是语法。

这有效:

public boolean waitForURLToMatch(String expectedURL, int waitTime){
    Wait<WebDriver> wait = new WebDriverWait(driver, waitTime);
    Function<WebDriver, Boolean> function = new Function<WebDriver, Boolean>() {
        public Boolean apply(WebDriver driver) {
            String currentURL = driver.getCurrentUrl();
            if(currentURL.equals(expectedURL))
            {
                truefalse = true;
                return truefalse;
            }
            truefalse = false;
            return truefalse;
        }
    };
    try{
        wait.until(function);
    } catch (TimeoutException e){   
    }
    return truefalse;
}
编辑:好的,所以看起来这只是一个类路径冲突,所有现在都可以工作,类路径冲突与Selenium一起删除已弃用的直到(谓词)混淆了这个问题。