synchronization code example
Example 1: handling synchronization
- 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: synchronization issue
Synchronization is very common issue in testing enviroment.
SYNCHRONIZATION means moving, working, acting together
so We want the webdriver and the browser to be synchronized.
First thing to handle synchronization issue is
THREAD.SLEEP
Coming from JAVA, not Selenium.
- Stops the execution of the code with no conditions checked.
- If we say wait for 10 seconds, it will stop the execution of the whole code
for 10 seconds.
- It is not considered a good practice to use Thread.sleep.
- i don't use it since help makes execution longer and heavier.
OPTION #2: Implicit Wait
- Implicit wait is coming from selenium.
- The default value is 0 second
- Every time findElement, findElements method
is used, this implicitlyWait method is triggered.
- We set this once, and it applies to every time
we are trying to find element.
explicit wait=
I use it when I want to wait for specific conditions or
specific web elements.
- Such as: elementIsClickable
- elementIsDisplayed
- titleIs...
- To be able to use explicit wait:
- You need to create instance of WebDriverWait class.