Published On Nov 9, 2021
All FREE courses - https://automationstepbystep.com/
00:00 Introduction
00:40 What are waits
01:05 Why waits are needed
02:13 Types of Waits in Selenium
02:26 Implicit
09:37 Explicit
15:17 Mixing Implicit & Explicit wait Warning
16:03 Fluent
Selenium Quiz - https://automationstepbystep.com/quiz...
What are waits
Functions in selenium to make webdriver wait for a specific time or for some condition to be true
Why waits are required in Automation Testing
Sometimes the automation script is faster than the browser loading time or objects render time on browser - no such element
Different elements may load at different time interval
Se webdriver script and browser events may not be synchronous at all times
Types of waits
implicit
explicit
fluent
Implicit Wait
Useful when there is some gap in loading time of the web page and web elements
An implicit wait makes WebDriver to poll the DOM for a certain amount of time when trying to find an element or elements if they are not immediately available
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
default setting is 0 (disabled)
Once set, the implicit wait is set for the entire life of the session
Polling frequency - 500 ms
Explicit Wait
Useful when there you need to wait until some condition is met
Makes WebDriver to wait until a certain condition is true
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("")));
alert is present
element exists
element is visible
title contains
title is
element staleness
visible text
Polling frequency - 500 ms
Warning:
Mixing implicit and explicit waits can cause unpredictable wait times
E.g.
Implicit wait = 10 sec
Explicit wait = 15 sec
could cause a timeout to occur after 25 seconds.
Fluent Wait
similar to Explicit wait, i.e. wait for a certain duration until a condition is met
Differences
Polling frequency - can change as per need
Ignore Exception - in case element is not found, can ignore any exception like ‘NoSuchElement’ exception etc.
Wait<WebDriver> fluentWait = new FluentWait<WebDriver>(driver)
.withTimeout(Duration.ofSeconds(10))
.pollingEvery(Duration.ofSeconds(1))
.ignoring(NoSuchElementException.class);
fluentWait.until(ExpectedConditions.elementToBeClickable(By.xpath("")));
Selenium official website - https://www.selenium.dev/documentatio...
#Selenium4Tutorials
Stories by Raghav - https://automationstepbystep.com/stor...
My Udemy Courses - https://automationstepbystep.com/udem...
Every LIKE & SUBSCRIPTION gives me great motivation to keep working for you
You can support my mission for education by sharing this knowledge and helping as many people as you can
If my work has helped you, consider helping any animal near you, in any way you can.
Never Stop Learning
Raghav