Waits tell your script to pause until something is ready.

Implicit Wait: A default delay before throwing an error.

Explicit Wait: Wait for a specific condition.

Fluent Wait: Like explicit, but checks repeatedly.

Example (Explicit in Python):

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(browser, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "login")))

Explicit waits give better control. Use them instead of fixed delays.