iToverDose/Software· 25 APRIL 2026 · 00:05

Selenium with Python: Practical Test Automation Scripts You Can Use Today

Discover ready-to-use Selenium with Python examples that streamline test automation, reduce flaky tests, and integrate seamlessly with CI pipelines for faster feedback loops.

DEV Community3 min read0 Comments

Modern software development demands fast, reliable test automation. Selenium with Python offers a robust foundation for QA engineers and SDETs to automate browser interactions efficiently. This practical guide delivers actionable examples you can copy, adapt, and scale in real testing environments.

Setting Up Selenium for Immediate Use

Before automating tests, ensure your environment is configured correctly. Install Selenium using the package manager with a single command.

pip install selenium

Next, download the browser-specific driver and place it in your system’s PATH. Each browser requires a different driver:

  • Chrome: chromedriver
  • Firefox: geckodriver
  • Edge: msedgedriver

Most modern setups use ChromeDriver for compatibility and speed. Verify the driver is accessible by running a minimal test script.

Launching Browsers for Testing

Initialize a browser session with a few lines of Python code. This example starts Chrome, navigates to a test page, and prepares the environment for further automation.

from selenium import webdriver

# Basic browser launch
driver = webdriver.Chrome()
driver.get(")

For continuous integration pipelines, run tests headlessly to save resources. Configure Chrome to operate without a graphical interface while maintaining window dimensions.

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
options.add_argument("--window-size=1920,1080")

headless_driver = webdriver.Chrome(options=options)

Locating Elements with Precision

Effective test automation begins with stable element identification. Prefer reliable locators to avoid brittle tests that break with minor UI changes.

from selenium.webdriver.common.by import By

# Highly recommended locators
driver.find_element(By.ID, "submit")
driver.find_element(By.NAME, "email")
driver.find_element(By.CSS_SELECTOR, ".login-button")
driver.find_element(By.CSS_SELECTOR, "input[type='password']")

XPath selectors should be used sparingly and only when no other option exists. Over-reliance on XPath increases maintenance costs and test fragility.

# Avoid unless necessary
driver.find_element(By.XPATH, "//button[text()='Login']")

Interacting with Web Elements Efficiently

Simulate user actions by clicking buttons, entering text, and clearing fields. Reading element values ensures your tests validate dynamic content accurately.

# Common interactions
element.click()
element.send_keys("user@test.com")
element.clear()

# Read values
element.text
element.get_attribute("value")

Implementing Robust Wait Strategies

Flaky tests often stem from poor synchronization. Replace fixed delays with explicit waits to ensure elements are ready before interaction.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
login_btn = wait.until(
    EC.element_to_be_clickable((By.ID, "login"))
)

Common expected conditions include:

  • presence_of_element_located
  • visibility_of_element_located
  • element_to_be_clickable

Avoid time.sleep() entirely—it introduces unnecessary delays and unpredictability.

Handling Forms, Dropdowns, and Advanced UI Components

Dropdowns simplify user input selection. Use the Select class to interact with <select> elements consistently.

from selenium.webdriver.support.ui import Select

dropdown = Select(driver.find_element(By.ID, "country"))
dropdown.select_by_visible_text("India")

For alerts, iframes, and multiple tabs, Selenium provides specific methods to switch contexts and maintain control over the browser state.

Extending Test Automation with Pytest

Selenium alone is insufficient for scalable automation. Combine it with Pytest to structure tests, manage fixtures, and generate meaningful reports—ideal for CI pipelines.

First, install Pytest.

pip install pytest

Organize your project with a clean structure.

tests/
├── pages/
│   └── login_page.py
├── conftest.py
├── test_login.py
└── pytest.ini

Define a reusable WebDriver fixture in conftest.py to centralize setup and teardown logic.

import pytest
from selenium import webdriver

@pytest.fixture
def driver():
    driver = webdriver.Chrome()
    driver.maximize_window()
    yield driver
    driver.quit()

Write a focused test that validates user login flows.

def test_valid_login(driver):
    driver.get(")
    driver.find_element(By.ID, "username").send_keys("admin")
    driver.find_element(By.ID, "password").send_keys("password")
    driver.find_element(By.ID, "login").click()
    assert "Dashboard" in driver.title

Applying Page Object Model for Maintainability

Reduce duplication and improve readability using the Page Object Model. Encapsulate page interactions in reusable classes.

# pages/login_page.py
class LoginPage:
    def __init__(self, driver):
        self.driver = driver

    def login(self, user, pwd):
        self.driver.find_element(By.ID, "username").send_keys(user)
        self.driver.find_element(By.ID, "password").send_keys(pwd)
        self.driver.find_element(By.ID, "login").click()
# test_login.py
def test_login_success(driver):
    page = LoginPage(driver)
    page.login("admin", "password")
    assert "Dashboard" in driver.title

Leveraging Pytest Markers for Test Organization

Mark tests with categories like @pytest.mark.smoke to run specific suites during development.

@pytest.mark.smoke
def test_smoke_login():
    pass

Execute smoke tests with:

pytest -m smoke

For CI reporting, generate HTML test reports.

pip install pytest-html
pytest --html=report.html

Selenium with Python transforms manual testing into automated, repeatable workflows. Pair it with Pytest to build scalable, maintainable suites that integrate smoothly with development pipelines. Start with these practical patterns, then expand to complex scenarios as your automation matures.

AI summary

Günlük test otomasyonunda en sık kullanılan Selenium + Python senaryolarını keşfedin. Kurulumdan raporlamaya kadar tüm adımları öğrenin ve projelerinizde uygulayın.

Comments

00
LEAVE A COMMENT
ID #BR4PYM

0 / 1200 CHARACTERS

Human check

8 + 7 = ?

Will appear after editor review

Moderation · Spam protection active

No approved comments yet. Be first.