webdriver wait code example
Example 1: how to waitselenium webelement java
//required import
WebDriver driver = new ChromeDriver();
// Timeout in seconds
WebDriverWait wait = new WebDriverWait(driver, 15);
//Three most common explicit waits
//waits until the element is visible and can be clicked
wait.until(ExpectedConditions.elementToBeClickable(By.id("button1")));
//waits until the element is visible on the page somewhere i.e. pixels > 0
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("text_box1")));
//waits until the element is removed from the page
//This one is helpful when moving from one page to another
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("text_box1")));
//implicit wait will wait a set time, similar to Thread.sleep();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//There is also a FluentWait, but I am unfamiliar with it
Example 2: 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 3: 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 4: 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()