A zero-boilerplate Selenium WebDriver fixture for pytest
Project description
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 and Firefox 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) | 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 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 feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
👨💻 Author
Shubham Singh - shubham.fps@gmail.com
🙏 Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_selenium_driver-0.1.0.tar.gz.
File metadata
- Download URL: pytest_selenium_driver-0.1.0.tar.gz
- Upload date:
- Size: 17.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a51abaaa74264ef94b358604305fa1fadf219802ef1bec23b9d838469f031d90
|
|
| MD5 |
eb3dd4a7490f98daac163ae51467dabb
|
|
| BLAKE2b-256 |
680ffde3805e404bc94d708b6e3380e24fb3d899f0bd200af9bc863190754a4a
|
File details
Details for the file pytest_selenium_driver-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pytest_selenium_driver-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
000d137693a4d37b7da3ccd0883ef3c4b0f96346fbca8db75a067d432b5f47d0
|
|
| MD5 |
6a72e18751c6c8ed2d9609411097d1de
|
|
| BLAKE2b-256 |
0835d1f14aee0c192bf8439cfedb3b07ab29ed4716559996fa888a606279c904
|