what is wait unit in selenium webdriver 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));