WebDriverWait
WebDriverWait - это специализация FluentWait, использующая экземпляры WebDriver.
Конструкторы:
WebDriverWait(WebDriver driver, java.time.Clock clock, Sleeper sleeper, long timeOutInSeconds, long sleepTimeOut)
WebDriverWait(WebDriver driver, long timeOutInSeconds)
: При вызове этого Wait будут игнорироваться экземпляры NotFoundException , которые встречаются (выбрасываются) по умолчанию в условии 'till', и немедленно распространяют все остальные. WebDriverWait(WebDriver driver, long timeOutInSeconds, long sleepInMillis)
: При вызове этого Wait будут игнорироваться экземпляры NotFoundException , которые встречаются (выбрасываются) по умолчанию в условии 'till', и немедленно распространяют все остальные,
Лямбда-реализация для WebDriverWait
Пример A:
(new WebDriverWait(driver(), 5))
.until(new ExpectedCondition<WebElement>() {
public WebElement apply(WebDriver d) {
return d.findElement(By.linkText(""));
}
});
Пример B:
WebElement wer = new WebDriverWait(driver, 5).until((WebDriver dr1) -> dr1.findElement(By.id("q")));
Пример C:
(new WebDriverWait(driver(), 5)).until((driver) -> driver.findElement(By.linkText("Google")));
FluentWait
FluentWait - это реализация интерфейса Wait , для которого могут быть настроены время ожидания и интервал опроса на лету.
Каждый экземпляр FluentWait определяет максимальное время ожидания условия, а также частоту проверки условия.Кроме того, пользователь может настроить время ожидания для игнорирования определенных типов исключений во время ожидания, например NoSuchElementExceptions при поиске элемента на странице.
Пример использования:
// Waiting 30 seconds for an element to be present on the page, checking for its presence once every 500 milliseconds.
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(Duration.ofSeconds(30))
.pollingEvery(Duration.ofMillis(500))
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.name("q"));
}
});
Примечание : Этот класс не дает никаких гарантий безопасности потоков.
Вы можете найти рабочий пример FluentWait в обсуждении Selenium Webdriver 3.0.1: ошибка показа Selenium для класса FluentWait