How to use wait commands in Selenium WebDriver in Java ?

Author: neptune | 22nd-Feb-2022
#Selenium #Testing #Java

What are Wait commands in Selenium?

In automation testing waits are used to halt or pause the execution of test cases for a certain amount of time before throwing an exception or moving to the next step.

Why do we need Selenium Wait commands?

The waits are essential when it comes to automation testing. In automation testing, sometimes the application doesn't work as we expect. In such scenarios we want the driver to wait for a certain amount of time before throwing an exception.
To fulfill the purpose we have different types of waits commands.

Selenium provides these three types of waits.

  1. Implicit Wait

  2. Explicit Wait

  3. Fluent Wait

Let’s explore these waits in detail.






1. Implicit Wait

Implicit wait is a globally declared wait which means it will apply for each element in the entire duration for which the browser is open.


To implement implicit wait, import the following package.

import java.util.concurrent.TimeUnit;

Syntax:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);


Above line will implement implicit wait for 10 seconds for each element.

2. Explicit Wait

Explicit wait is used for specific conditions to fulfil before proceeding to another element or step. When we are not aware about the time element will take to load.

Explicit wait is more intelligent, but can only be applied for specified elements.


1.To implement Explicit wait, import the following package.
import org.openqa.selenium.support.ui.ExpectedConditions

import org.openqa.selenium.support.ui.WebDriverWait


2. Then initialise the wait object.

WebDriverWait wait = new WebDriverWait(driver,30);


3.  Apply a wait object for the Submit button to clickable.

WebDriverWait wait = new WebDriverWait(driver,30);

wait.until(ExpectedConditions.

visibilityOfElementLocated

(By.xpath("//div[contains(text(),'Submit')]")));


Above code will implement Explicit wait for 30 seconds for the submit button to be clickable.






3.Fluent Wait

In Fluent Wait WebDriver waits for a certain time till the web element becomes visible. It also defines how frequently WebDriver will check if the condition appears before throwing the “ElementNotVisibleException”.


It checks web elements repeatedly at regular intervals until timeout happens or until the element is found. It is commonly used in Ajax applications. We can set a default polling period as needed.


Syntax:

Wait wait = new FluentWait(WebDriver reference)

.withTimeout(timeout, SECONDS)

.pollingEvery(timeout, SECONDS)

.ignoring(Exception.class);

Example of Fluent Wait Command

1.Declare and initialise a fluent wait

FluentWait wait = new FluentWait(driver);

//Specify the timeout of the wait

wait.withTimeout(600, TimeUnit.MILLISECONDS);

//Specify polling time

wait.pollingEvery(50, TimeUnit.MILLISECONDS);

//Specify what exceptions to ignore

wait.ignoring(NoSuchElementException.class)

//This is how we specify the condition to wait on.

wait.until(ExpectedConditions.alertIsPresent());


Thanks for Reading ! 
If you have any query Please let me know in comment section.




anonymous | Feb. 15, 2023, 1:17 p.m.

Well explained 👍


anonymous | March 20, 2022, 11:23 p.m.

Really good explanation. Add more about selenium automation....



Related Blogs
Automate Ticket Booking in SpiceJet from Delhi to Bengaluru using Selenium and Cucumber.
Author: neptune | 06th-Jul-2024
#Selenium
We are going to automate a ticket booking using Selenium WebDriver and Cucumber BDD...

Where you applied OOPs in Automation Testing?
Author: neptune | 28th-Aug-2023
#Interview #Java
You may face this question Where you have applied OOPs concept in Automation Framework? in almost all the Selenium Interviews. Let's learn OOP’s concept in Java before going further...

Roadmap To Become Test Automation Engineer
Author: neptune | 25th-Jun-2022
#Testing
When I was starting my journey in test automation, a lot of questions comes to my mind. Such as…. “From where do I start?” “Best tools to use?” “Which Programming language?” “How to plan your work?”...

Selenium, Cucumber, JUnit, TestNG dependencies for Selenium project.
Author: neptune | 02nd-Apr-2023
#Selenium #Testing
We guide you how to update the pom.xml file for Selenium Maven project...

5 Selenium Project Ideas & for Beginners in Automation Testing
Author: neptune | 30th-Mar-2023
#Selenium #Testing #Projects
In this article, we will discuss 5 interesting Selenium project ideas for beginners in automation testing...

Top 50+ Selenium Interviews Questions 2023 based on Years of Experience
Author: neptune | 02nd-Apr-2023
#Selenium #Testing #Interview
Every interview difficulty is based on how many years of experience you have in that field. For the Selenium Automation Tester I have divided the question on the number of years of experience...

Best way to reverse a String for beginners in Java.
Author: neptune | 15th-Jun-2023
#Java
We will explore How to reverse a String in Java using simple way. If you are beginner in Java then you are at the right place...

Static Import Concept in Java
Author: neptune | 31st-Dec-2022
#Java
If you overuse the static import feature, it makes the program unreadable and unmaintainable...

Getting Started with Cypress: Advantages, Setup, and First Test Guide
Author: neptune | 31st-Mar-2023
#Testing
Cypress is a powerful and easy-to-use testing framework that can help you test your web applications more efficiently...

View More