Skip to content

Wait Times - Implicit vs Explicit Waits

Why waits matter

Dynamic pages load elements later.

If you try to locate elements too early, you get:

  • NoSuchElementExceptionNoSuchElementException
  • ElementNotInteractableExceptionElementNotInteractableException

Implicit wait

implicit_wait.py
from selenium import webdriver
 
 
driver = webdriver.Chrome()
driver.implicitly_wait(5)  # seconds
implicit_wait.py
from selenium import webdriver
 
 
driver = webdriver.Chrome()
driver.implicitly_wait(5)  # seconds

It applies to element lookups globally.

explicit_wait.py
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.Chrome()
try:
    driver.get("https://example.com")
 
    h1 = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.TAG_NAME, "h1"))
    )
    print(h1.text)
finally:
    driver.quit()
explicit_wait.py
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.Chrome()
try:
    driver.get("https://example.com")
 
    h1 = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.TAG_NAME, "h1"))
    )
    print(h1.text)
finally:
    driver.quit()

Tip

Prefer explicit waits for specific elements.

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did