Chờ thông thạo là một thời gian chờ động khiến người lái xe tạm dừng đối với một điều kiện được kiểm tra ở tần suất trước khi đưa ra một ngoại lệ. Phần tử được tìm kiếm trong DOM không phải liên tục mà ở một khoảng thời gian đều đặn.
Ví dụ:nếu thời gian chờ là 5 giây, FluentWait sẽ giám sát DOM theo các khoảng thời gian đều đặn (được xác định bằng cách thăm dò trong thời gian). Trong FluentWait, cần phải xây dựng các phương pháp chờ tùy chỉnh dựa trên điều kiện.
Cú pháp -
Wait<WebDriver> w = new FluentWait< WebDriver >(driver) .withTimeout (10, SECONDS) .pollingEvery (2, SECONDS) .ignoring (NoSuchElementException.class)
Ví dụ
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://www.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(); } }