Skip to main content

pytest-selenium-driver

PyPI version Python versions License: MIT

A zero-boilerplate Selenium WebDriver fixture for pytest with support for multiple browsers, headless mode, and both local and remote execution.

Features

  • Zero setup - Works out of the box with Selenium Manager
  • Multi-browser - Chrome, Firefox, and Edge support
  • Headless mode - Perfect for CI/CD pipelines
  • Remote execution - Selenium Grid compatibility
  • Parallel testing - pytest-xdist integration
  • Thread-safe - Isolated WebDriver instances
  • Type hints - Full typing support
  • Comprehensive logging - Debug-friendly output

Quick Start

Installation

pip install pytest-selenium-driver

Basic Usage

The plugin automatically registers with pytest and provides a driver fixture:

def test_example(driver):
    driver.get("https://example.com")
    assert "Example" in driver.title

def test_form_submission(driver):
    driver.get("https://httpbin.org/forms/post")
    driver.find_element("name", "custname").send_keys("John Doe")
    driver.find_element("css selector", "input[type='submit']").click()
    assert "John Doe" in driver.page_source

Command Line Options

Option Description Default
--browser Browser to use (chrome, firefox, edge) chrome
--headless Run browser in headless mode False
--remote Use remote WebDriver execution False
--grid-url Selenium Grid URL for remote execution None

Usage Examples

Local Testing

# Run tests with Chrome (default)
pytest

# Run tests with Firefox
pytest --browser=firefox

# Run tests with Edge (Chromium-based)
pytest --browser=edge

# Run in headless mode (great for CI)
pytest --browser=chrome --headless

Remote Testing (Selenium Grid)

# Run tests on remote Selenium Grid
pytest --remote --grid-url=http://selenium-grid:4444/wd/hub

# Remote with specific browser and headless mode
pytest --remote --grid-url=http://selenium-grid:4444/wd/hub --browser=firefox --headless

Parallel Testing

# Run tests in parallel (requires pytest-xdist)
pip install pytest-xdist
pytest -n 4 --browser=chrome --headless

Integration with Other Plugins

# Generate HTML reports with pytest-html
pytest --browser=firefox --html=report.html

# Run with coverage
pytest --browser=chrome --headless --cov=myapp

Advanced Configuration

Custom Fixture Scopes

# Function-scoped (default) - fresh driver for each test
def test_with_function_driver(driver):
    pass

# Class-scoped - shared driver across test class
def test_with_class_driver(class_scoped_driver):
    pass

# Session-scoped - shared driver across entire test session
def test_with_session_driver(session_scoped_driver):
    pass

Extending with Custom Arguments

Create a conftest.py to add custom CLI arguments:

def pytest_addoption(parser):
    group = parser.getgroup("selenium-driver")
    group.addoption("--timeout", type=int, default=10, 
                   help="Default timeout for WebDriver waits")

@pytest.fixture
def wait(request, driver):
    from selenium.webdriver.support.ui import WebDriverWait
    timeout = request.config.getoption("--timeout")
    return WebDriverWait(driver, timeout)

Requirements

  • Python 3.8+
  • pytest 7.0+
  • selenium 4.6+

Note: Browser drivers are automatically managed by Selenium Manager (no manual setup required!)

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for development setup and guidelines.

CI PyPI version

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Shubham Singh - shubham.fps@gmail.com

Acknowledgments

  • Built on top of the excellent Selenium project
  • Inspired by the pytest testing framework
  • Thanks to the Python testing community

Metadata

Release files for pytest-selenium-driver 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-selenium-driver 0.2.0
File Size Uploaded
pytest_selenium_driver-0.2.0.tar.gz 18.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-selenium-driver 0.2.0
File Interpreter ABI Platform
pytest_selenium_driver-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 34.0 kB

Release files / pytest_selenium_driver-0.2.0.tar.gz

Download URL pytest_selenium_driver-0.2.0.tar.gz
Size 18.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5a39802286e818fbfbadf66b7896fba61f5daa9d4ae3cc509b52b792fb83707e
BLAKE2b-256 checksum
How to use checksums
c40cb1a51264fc4889fe3f6882a55e645391685792c057ee6c31cf5a0898033d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / pytest_selenium_driver-0.2.0-py3-none-any.whl

Download URL pytest_selenium_driver-0.2.0-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0d2c1c357ec83676db1d980ea16f7029ae954dc190f2b7d138b443a2783223c
BLAKE2b-256 checksum
How to use checksums
bf5d276ce8a38bccb23f706a915da0d65aa019aa2577ad01242d998b438761a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page