Fluent wait выполняет какие действия?


Fluent-ожидание — это динамическое ожидание, которое заставляет систему приостановить выполнение при определенном условии, которое проверяется с некоторой частотой до возникновения исключения. Поиск элемента в DOM осуществляется не постоянно, а с определенным временным интервалом.

Например, если время ожидания составляет 5 секунд, то FluentWait осуществляет мониторинг DOM с определенной периодичностью (заданный интервал времени). В FluentWait необходимо создавать настраиваемые методы ожидания в соответствии с определенными условиями.

Синтаксис

Wait<WebDriver> w = new FluentWait< WebDriver >(driver)
.withTimeout (10, SECONDS)
.pollingEvery (2, SECONDS)
.ignoring (NoSuchElementException.class)

Пример

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.FluentWait;
public class Fluentwt {
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      String url = "https://tutorialspoint.com/index.htm";
      driver.get(url);
      //implicit wait with time in seconds applied to each elements
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      //Clicking on Coding Ground link
      driver.findElement(By.xpath("//span[text()=’Coding Ground’]")).click();
      // fluent wait declaration
      Wait<WebDriver> w = new FluentWait<WebDriver>(driver).withTimeout
      (Duration.ofSeconds(30))
      .pollingEvery(Duration.ofSeconds(3)).ignoring(
      NoSuchElementException.class);
      WebElement fl = w.until(new Function<WebDriver, WebElement>() {
         // customized condition for fluent wait
         public WebElement apply(WebDriver driver) {
            if (driver.findElement(By.xpath("[//img[@title=’Whiteboard’"))
            .isDisplayed()) {
               return true;
            }else {
               return null;
            }
         }
      });
      driver.quit();
   }
}

Дата обновления: 10.06.2020

440 просмотров

Запустите свою карьеру

Получите сертификат по окончании курса

Приступить
广告