pytest-selenium-driver
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.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Shubham Singh - shubham.fps@gmail.com
Acknowledgments
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)
| File | Size | Uploaded | |
|---|---|---|---|
| pytest_selenium_driver-0.2.0.tar.gz | 18.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|