Возможны следующие ожидания:
FluentWait
Это особенное ожидание, в котором можно установить время ожидания определенного условия, а также частоту, с которойпроверить состояние, например, например.ждать 10 секунд и проверять каждые 1 и игнорировать исключение «NoSuchElementExceptions», если вы ожидаете, что это исключение произойдет в течение некоторого времени
Wait wait = new FluentWait(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("foo"));
}
});
явное ожидание Это своего рода ожидание, когда выМожно настроить его на ожидание любого условия, которое вам может понравиться.Как правило, вы можете использовать некоторые из готовых ExpectedConditions
Типы ожидаемых условий: https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/support/ui/ExpectedConditions.java
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
Неявное ожидание ожидание элементаДо тех пор, пока исключение не будет сгенерировано при инициализации объекта и определено в течение всего сеанса
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
driver.get("http://...");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));
PageLoadTimeou Сколько времени будет до загрузки страницы:
driver.manage().timeouts().pageLoadTimeout(100, SECONDS);
SetScriptTimeout
, если у вас есть асинхронные сценарии.Время ожидания завершения выполнения асинхронного сценария, прежде чем выдать ошибку.
driver.manage().timeouts().setScriptTimeout(100,SECONDS);