Computer >> Máy Tính >  >> Lập trình >> Javascript

Chờ đợi trôi chảy có tác dụng gì?

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