If we use implicit and explicit wait together, when the exceptions are thrown code example
Example 1: 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 2: implicit wait vs explicit wait
In Implicit wait, if WebDriver is not able to
locate an element, it will wait for a specified
amount of time for the element to appear,
before throwing an exception.
Explicit wait is a type of wait , which is used to
stop the execution till a specific condition is true;
We use WebDriverWait and ExpectedCondition classes of
Selenium web driver to implement explicit wait.
Implicit wait is general, explicit wait is applied
for a particular instance only.
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(txtFirstname));