Selenium 4 Beginner Tutorial 3 | Waits
Automation Step by Step Automation Step by Step
507K subscribers
21,910 views
0

 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

show more

Share/Embed