我在下面写了代码,用于在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);
答案 0 :(得分:2)
您的代码无效的原因:
因为您在等待该元素之前已将元素作为WebElement
传递,所以代码必须开始寻找并失败。不应将其作为WebElement
传递,而应将其视为By.class
的实例。
public void presenceOfElementLocated(By elementLocator) {
new WebDriverWait(driver,timeout)
.until(ExpectedConditions.presenceOfElementLocated(elementLocator));
}