在我的情况下,显式等待不起作用

时间:2014-05-27 13:08:40

标签: selenium-webdriver

我在下面写了代码,用于在selenium中进行显式等待,但不知怎的,它不起作用...任何人都可以在我的代码中提出错误。

public void waitForElementToBePresent(WebElement locator) {
    waitForElement(locator);
}

public WebElement waitForElement(WebElement locatorname) {
    WebDriverWait wait = new WebDriverWait(driver, timeout);
    return (WebElement) wait.until(presenceOfElementLocated(locatorname));
}

public static Function<WebDriver, WebElement> presenceOfElementLocated(final WebElement locatorname) {
    return new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return (locatorname);
        }

    };
}

然后我需要等待一个我正在呼唤的元素:

waitForElementToBePresent(locatorName);

1 个答案:

答案 0 :(得分:2)

您的代码无效的原因:

  • 因为您在等待该元素之前已将元素作为WebElement传递,所以代码必须开始寻找并失败。不应将其作为WebElement传递,而应将其视为By.class的实例。

    public void presenceOfElementLocated(By elementLocator) {
    new WebDriverWait(driver,timeout)
    .until(ExpectedConditions.presenceOfElementLocated(elementLocator));
    }