In Selenium with Python, you can wait for a web page to be fully loaded or for specific elements to appear before interacting with them using Explicit Waits. Explicit Waits allow you to wait for a certain condition to be met within a specified timeout period. Common conditions include waiting for an element to be clickable, visible, or have a specific attribute value.

Here’s an example of how to use Explicit Waits in Python with 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

# Create a WebDriver instance
driver = webdriver.Chrome()

# Navigate to a web page
driver.get("https://example.com")

# Define a timeout for the explicit wait (e.g., 10 seconds)
wait = WebDriverWait(driver, 10)

try:

# Wait for a specific element to be visible and clickable
element = wait.until(EC.element_to_be_clickable((By.ID, "example_id")))

# Perform actions on the element
element.click()

# You can also wait for the page title to change
wait.until(EC.title_contains("New Page Title"))

finally:

# Close the WebDriver
  driver.quit()

In this example:

  1. We import necessary Selenium classes and the WebDriverWait class, which provides explicit wait functionality.
  2. We create a WebDriver instance (in this case, for Chrome) and navigate to a web page.
  3. We define an explicit wait object (`wait`) with a timeout of 10 seconds.
  4. Inside a `try` block, we use `wait.until()` to specify the condition to wait for. In this case, we wait for an element with the ID “example_id” to be clickable. You can change the condition to meet your specific needs.
  5. Once the condition is met, we interact with the element (click it).
  6. You can also wait for the page title to change by using `wait.until(EC.title_contains(“New Page Title”))`.
  7. Finally, in the `finally` block, we close the WebDriver.

Using explicit waits helps ensure that your script waits for elements or page states to be ready before proceeding with interactions, which is essential for robust and reliable automation.

Support On Demand!

QA Automation