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 | 08th-Aug-2023
#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...

Different types of software testing ?
Author: neptune | 27th-Jul-2022
#Testing #IT
Testing is the process to improve the performance of software. Examples: Unit, Integration, Regression, Smoke, Alpha, Beta, System, Stress Performance, Object-Oriented Testing etc...

Top 10 Selenium Interview Questions with answers (2021).
Author: neptune | 02nd-Apr-2023
#Selenium #Interview
In this article I will cover top 10 Selenium interview questions...

Mostly asked Cucumber interview questions in selenium automation interviews.
Author: neptune | 02nd-Apr-2023
#Testing
We are going to explore widely asked Cucumber interview questions in selenium automation interviews...

How to create Selenium Cucumber Project in Eclipse.
Author: neptune | 25th-May-2022
#Selenium
First, divide the process into the various steps to understand working in brief of a project. Steps in brief: We’ll start with initializing the browser driver and then log in to the web page...

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...

Challenges faced in automating Web Applications using Selenium
Author: neptune | 02nd-Oct-2022
#Selenium #Testing
List of Challenges faced by testers using Selenium 1. Popup and Alert Handling, 2. Dynamic element Handling 3. Restricted to only Desktop Browsers Testing...

How to create a Selenium, Cucumber Automation project in Eclipse ?
Author: neptune | 02nd-Apr-2023
#Selenium #Testing
Problem Statement : Let’s consider this particular project where we will try automating the process of booking a flight ticket. Let’s get started and see how it’s done using Selenium...

20 TestNG Interview Questions
Author: neptune | 17th-Dec-2022
#Selenium #Interview
There is always more than one test or method in the class. If we do not prioritize these tests or methods, then the methods are selected alphabetically and executed while execution...

What is Test Plan in Testing?
Author: neptune | 30th-Oct-2022
#Testing
A Test Plan Document mentions in detail the objective of testing along with other core information like the internal beta team, target market, hardware and resource requirements, etc...

Getting started with Selenium WebDriver.
Author: neptune | 02nd-Apr-2023
#Selenium #Testing
In this blog I will give you an overview of Selenium WebDriver and Also discuss about advantages and disadvantages of Selenium WebDriver...

Why we use Robot Class in Automation Testing?
Author: neptune | 23rd-Aug-2022
#Selenium
Robot class is used to generate native system input events for the purpose of automation testing. It is used to perform mouse and keyboard events on windows applications or popups...

Top 10 Selenium Interview Questions.
Author: neptune | 02nd-Apr-2023
#Selenium #Interview
Locator is a command that tells Selenium IDE which GUI elements (like Text Box, Buttons, Check Boxes etc) we are going to use or perform some automation task...

How to send POST request using Rest Assured framework in Java ?
Author: neptune | 26th-Mar-2023
#Selenium #API
Rest Assured is a popular Java-based framework that is used for testing RESTful web services. It provides a simple and intuitive API for sending HTTP requests and validating the responses...

5 Best Python Testing Frameworks.
Author: neptune | 12th-Apr-2023
#Python #Testing
Python offers various testing frameworks, including Pytest, unittest, Nose, Robot Framework, and Behave, to build robust and reliable software...

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...

How DAST Testing Enhances Web Application Security?
Author: neptune | 02nd-Aug-2023
#Testing
Dynamic Application Security Testing (DAST) is a critical cybersecurity technique used to identify and assess security vulnerabilities in web applications...

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...

The Key to QA Success: Understanding How Important Grooming Is?
Author: neptune | 19th-Sep-2023
#Testing #Interview
We will delve into the importance of grooming & ceremony for QA testers, key points to highlight their significance...

View More