以下是我的代码
public boolean waitForElementToBeClickable(String xpathValue){
Boolean flag = false;
WebElement myDynamicElement = (new WebDriverWait(Base.base.getDriver(), 30))
.until(ExpectedConditions.elementToBeClickable(By.xpath(xpathValue)));
flag = true;
return flag;
}
此等待元素出现30秒,如果元素在30秒之前就绪,则执行下一个命令。
但是当我使用下面的代码进行流畅的等待时
public Boolean waitForElementToAppear(final WebElement e){
Wait<WebElement> wait = new FluentWait<WebElement>(e)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(2, TimeUnit.SECONDS)
;
Boolean foo = wait.until(new Function<WebElement, Boolean>() {
public Boolean apply( WebElement element) {
return element.isDisplayed();
}
});
return foo;
}
它说没有这样的元素异常,它甚至不等待30秒,它会立即抛出异常。
有人可以告诉它有什么问题吗?
答案 0 :(得分:0)
通常当您使用FluentWait
时,您必须在等待期间至少忽略NoSuchElementException
。
像这样:
Wait<WebElement> wait = new FluentWait<WebElement>(e)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(2, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);