Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

What does fluent wait perform?


Fluent wait เป็นการรอแบบไดนามิกที่ทำให้ driver หยุดรอเงื่อนไขที่ตรวจสอบตามความถี่ก่อนจะโยน exception องค์ประกอบจะถูกค้นหาใน DOM ไม่ใช่ตลอดเวลา แต่เป็นช่วงเวลาปกติ

ตัวอย่าง ถ้ารอ 5 วินาที FluentWait จะตรวจสอบ DOM ทุกช่วงเวลาปกติ (กำหนดโดย pollingDuringTime) ใน FluentWait ต้องสร้างเมธอดการรอที่กำหนดเองตามเงื่อนไข

Syntax -

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