A2oz

How to Automate Form Filling in Selenium?

Published in Web Automation 3 mins read

Selenium is a powerful tool for automating web browser interactions, including form filling. Here's how you can automate forms using Selenium:

1. Locating Form Elements

Before interacting with form elements, you need to locate them within the HTML structure of the webpage. Selenium provides various methods for locating elements, such as:

  • ID: Use the find_element_by_id() method if the form element has a unique ID.
  • Name: Use the find_element_by_name() method if the form element has a unique name.
  • CSS Selector: Use the find_element_by_css_selector() method to target elements based on their CSS properties.
  • XPath: Use the find_element_by_xpath() method to locate elements based on their hierarchical position in the HTML structure.

Example:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com/form")

# Locate the input field by its ID
first_name_input = driver.find_element_by_id("firstName")

# Locate the dropdown menu by its name
country_dropdown = driver.find_element_by_name("country")

# Locate the submit button by its CSS selector
submit_button = driver.find_element_by_css_selector("button[type='submit']")

2. Filling Form Fields

Once you've located the form elements, you can interact with them using Selenium methods.

  • Text Fields: Use the send_keys() method to enter text into input fields.
  • Dropdown Menus: Use the select_by_visible_text() method to select an option from a dropdown menu.
  • Checkboxes and Radio Buttons: Use the click() method to select or deselect checkboxes or radio buttons.

Example:

# Enter first name
first_name_input.send_keys("John")

# Select "United States" from the country dropdown
country_dropdown.select_by_visible_text("United States")

# Click the submit button
submit_button.click()

3. Handling Dynamic Elements

If the form elements are dynamically loaded or updated, you might need to wait for them to be available before interacting with them. Selenium provides various methods for handling dynamic elements, such as:

  • Explicit Waits: Use the WebDriverWait class to wait for specific conditions, such as the element being visible or clickable.
  • Implicit Waits: Set a global timeout for all elements using the implicitly_wait() method.

Example:

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

# Wait for the submit button to be clickable
wait = WebDriverWait(driver, 10)
submit_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']")))

# Click the submit button
submit_button.click()

Conclusion

Automating form filling in Selenium is a straightforward process that involves locating form elements, interacting with them, and handling dynamic elements when necessary. By following these steps, you can significantly streamline your web testing and data entry processes.

Related Articles