fluentwait in selenium code example

Example 1: what is fluent wait selenium

FluentWait can define the maximum amount
of time to wait for a specific condition
and frequency/interval with which to
check the condition before throwing an 
“ElementNotVisibleException” exception.

To say in effortless manner, it tries
to find the web element repeatedly at 
regular intervals of time until the
timeout or till the object gets found.

We use FluentWait commands mainly when
we have web elements which sometimes 
visible in few seconds and some times
take more time than usual. Mainly in
Ajax applications. We could set the
default polling period based on our
requirement. We could ignore any
exception while polling an element.

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)							
	.withTimeout(30, TimeUnit.SECONDS) 			
	.pollingEvery(3, TimeUnit.SECONDS) 			
	.ignoring(NoSuchElementException.class);

FluentWait uses two parameters mainly – 
timeout value and polling frequency. and ignoring...

Example 2: 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 3: 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));