Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Fluent Wait trong Selenium làm gì?


Fluent wait là một chờ động (dynamic wait) khiến driver tạm dừng cho một điều kiện được kiểm tra ở một tần suất trước khi ném ngoại lệ. Phần tử được tìm kiếm trong DOM không liên tục mà theo khoảng thời gian đều đặn.

Ví dụ, nếu thời gian chờ là 5 giây, FluentWait giám sát DOM ở các khoảng thời gian đều đặn (được định nghĩa bởi polling time). Trong FluentWait, các phương thức chờ tùy chỉnh dựa trên điều kiện cần được xây dựng.

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();    } }