implicit and explicit wait in selenium code example

Example 1: implicit wait

1- Implicit Wait
Everytime we are trying to locate a webelement
is triggered. By default wait time is 0 second.
If we set the time to 10 seconds, and our driver
not able to find element, it will count for
given time. If element findst the webelement
it doesn't throw an exception.

Example 2: selenium wait seconds

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

Example 3: What happens if you mix implicit wait and explicit wait in a Selenium

Mixing both of them can cause unpredictable wait times.

Implicit wait is defined only once in the code.
It will remain same throughout the driver object instance.

Explicit wait is defined whenever it is necessary in the code. 
This wait will call at the time of execution. It is a conditional wait.

Explicit wait will override the implicit wait whereever
explicit wait is applied. So, Explicit Wait gets first preference
then Implicit Wait.

Example 4: explicit wait in selenium

2- Explicit Wait
explicit is waiting for
explicit condition to happen
Like:
-elementIsDisplayed
-titleIs()
-visibilityOf
-elementToBeClickable

We need to create object from 
webdriverwait class

Example 5: waits in selenium

- Synchronization is making sure our driver
  and browser are on the same page.
- Since selenium browser driver is a lot
  faster compared to the browsers , we use
  different types of waits to make sure
  selenium is synchronized with browsers.

There are 3 wait types to handle synchronization
issue from selenium;

1- Implicit Wait
Everytime we are trying to locate a webelement
is triggered. By default wait time is 0 second.
If we set the time to 10 seconds, and our driver
not able to find element, it will count for
given time. If element findst the webelement
it doesn't throw an exception.

2- Explicit Wait & 3- Fluent Wait
Both explicit and fluent wait is waiting for
explicit condition to happen
Like:
-elementIsDisplayed
-titleIs()
-visibilityOf
-elementToBeClickable
I use explicit wait in my framework

**THREAD.SLEEP
There is also thread.sleep comes from java library.
I always avoid to use it since it makes my
automation framework slower and heavier.
Thread.sleep basically holds the whole execution
for given time without any condition

Example 6: explicit waits selenium

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

Tags:

Java Example