Recommended Free Tools
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Selenium Wire adds network-traffic inspection and interception to Selenium WebDriver: you can capture browser requests and responses, wait for a request caused by an action, and use callbacks to modify traffic. But the original project is archived and no longer maintained. Its stated Python 3.7+ and Selenium 4.0.0+ compatibility is historical—not confirmation that it works with current releases. Treat it as a legacy dependency and verify it in a pinned environment before relying on it.
What Selenium Wire does—and its maintenance status
Selenium Wire wraps Selenium WebDriver so Python code can access traffic generated by a controlled browser. The original Selenium Wire repository documents request and response capture, request and response interceptors, WebSocket message capture, HAR output, and proxy support.
The same repository says the project is no longer maintained and became read-only on January 3, 2024. PyPI lists version 4.6.5, dated July 9, 2022. Those are historical project details, not assurance of compatibility with 2026 Python, Selenium, browser, or driver releases. Before adopting it, assess the dependency and security risks, and test the exact versions your project will use.
Free tools Windows power users keep installed
One-click scans. No signup required.
Compatibility context
The project README states Python 3.7+ and Selenium 4.0.0+. Current Selenium Python documentation describes support for Python 3.10+ and modern Selenium’s Selenium Manager, which handles browser-driver installation in most cases. Selenium’s current support information applies to Selenium itself; it does not establish that Selenium Wire works with every browser or current Selenium release.
#1 Best Overall
For Selenium Wire, an installation succeeding is not proof that browser startup, traffic interception, HTTPS inspection, or a particular browser combination will work. Keep a known-good environment pinned and run your own tests before upgrading its components.
Install it in an isolated Python environment
The package’s documented installation command is pip install selenium-wire. Use a virtual environment to avoid mixing this legacy dependency with unrelated projects. Selenium’s Python documentation recommends virtual environments and pip installation.
-
Create and activate a virtual environment using the method appropriate to your operating system. For example, on macOS or Linux:
python3 -m venv .venv, thensource .venv/bin/activate. In Windows PowerShell, usepy -m venv .venv, then.venvScriptsActivate.ps1.Recommended: Update Every Outdated Driver on Your PC in One Scan - Free →Recommended: Fix Windows Errors and Clear Junk Files in Minutes - Free Scan →Recommended: Crashes or Glitches? A Free Driver Scan Usually Finds the Culprit →Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Install Selenium Wire:
python -m pip install selenium-wire. The project documents Python 3.7+ and Selenium 4.0.0+ as its baseline, but that does not validate current-version compatibility. -
Install a browser supported by the Selenium setup you intend to use. Selenium documents Chrome, Edge, Firefox, Safari, and other browser support. Modern Selenium uses Selenium Manager for driver installation in most cases; this is Selenium setup guidance, not a Selenium Wire compatibility guarantee.
-
Run a minimal browser test in the exact environment you plan to deploy. Record Python, Selenium Wire, Selenium, browser, and operating-system versions so you can reproduce a working setup.
Capture and inspect browser requests
Import the browser wrapper from seleniumwire rather than using Selenium’s plain WebDriver wrapper. Navigate normally, then inspect the driver’s captured request collection. A request may have an associated response when the browser received one.
from seleniumwire import webdriver
# Selenium Wire documents this wrapper for Chrome.
driver = webdriver.Chrome()
try:
driver.get("https://example.com")
for request in driver.requests:
print("URL:", request.url)
print("Method:", request.method)
print("Status:", request.response.status_code if request.response else None)
finally:
driver.quit()
This example follows the documented workflow; it is not a claim that the archived package has been verified with current Chrome, Selenium, or Python. If startup fails, first check that the versions in your environment match a configuration you have tested.
What the captured entries represent
-
driver.requestsexposes the requests captured during the browser session. -
Each request exposes request details, including its URL and method, and may expose a response. A missing response can mean the request did not complete with a response; do not treat it as a successful HTTP result.
-
The README also documents WebSocket message capture and HAR output for workflows that need those capabilities. Consult the original repository documentation for the applicable APIs and setup details.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Wait for a request caused by a browser action
wait_for_request waits for a matching request to appear; it does not cause that request. Trigger the browser action that should generate traffic, then wait for a URL pattern that identifies the expected request.
from seleniumwire import webdriver
driver = webdriver.Chrome()
try:
driver.get("https://example.com")
# Replace this with the action in your page that triggers the request.
# For example: driver.find_element(...).click()
request = driver.wait_for_request("/api/", timeout=10)
print(request.url)
print(request.response.status_code if request.response else "No response")
finally:
driver.quit()
In runnable code, remove the leading space before driver = webdriver.Chrome() if copying the snippet as-is; Python does not permit an unexpected indentation at the top level. Use the wait after the action, and make the pattern specific enough to match the intended request rather than unrelated page traffic. The repository documents this API; confirm its behavior against the archived version and your environment.
Limit capture and change traffic with interceptors
Capturing every request can make a test harder to inspect and may add overhead. Selenium Wire documents URL scopes to limit which requests are stored. It also documents disabling capture and bypassing hosts; these are distinct controls. Use the repository’s documented options for the version installed, and do not assume that bypassing a host is equivalent to turning capture off globally.
Request and response interceptors are callbacks invoked on traffic. The README describes changing request or response fields, including headers. A request interceptor can, for example, add a header before the request proceeds:
from seleniumwire import webdriver
def add_test_header(request):
request.headers["X-Test-Run"] = "selenium"
driver = webdriver.Chrome()
driver.request_interceptor = add_test_header
try:
driver.get("https://example.com")
finally:
driver.quit()
Use only the specific mutation your test requires. Interception changes what the site receives or returns, so tests should make those changes explicit and avoid carrying them into unrelated cases. See the original repository documentation for supported interceptor details and the configuration syntax for URL scopes, capture controls, and host bypasses.
HTTPS, proxies, and operational trade-offs
Selenium Wire documents proxy support, and HTTPS traffic inspection or proxy use requires careful environment setup. The available documentation basis here does not establish a universal proxy or certificate recipe, so do not copy a generic configuration and assume it applies to your browser, network, and deployment. Follow the original project’s setup documentation for the exact options you need, and test with your organization’s proxy and certificate policies.
-
Overhead: traffic capture adds work compared with running the browser without capture. Keep stored traffic focused on the requests your test needs.
-
Reliability: the archived status makes version changes a risk. Pin dependencies and browser versions in a tested environment rather than relying on current Selenium support as evidence for Selenium Wire.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteSpecial offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
Security: a network-inspection layer and proxy configuration affect what traffic is observed or modified. Review dependency and security risks before using an unmaintained package for sensitive workflows.
-
Maintenance: a fork named
selenium-wire-lwsurfaced claims of Python 3.12+ and Selenium 4.10.0+, but those claims have not been independently verified here and its maintenance record is not established. It should not be treated as a vetted successor.
Troubleshoot common problems
The package installs, but the browser will not start
Installation only confirms that pip installed package files; it does not prove compatibility with your Python, Selenium, browser, or driver combination. Check the exact versions and reproduce the failure in a clean virtual environment. Selenium Manager may help Selenium obtain a browser driver in modern setups, but that does not validate Selenium Wire.
No requests appear in the collection
Confirm that you used the Selenium Wire WebDriver wrapper, navigated or performed an action that generates traffic, and have not disabled capture or configured a URL scope that excludes the request. A bypassed host and disabled capture are separate documented behaviors, so inspect both relevant settings.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →wait_for_request times out
The wait does not initiate navigation or a click. Perform the action first, check that it actually occurs, and broaden or correct the matching URL pattern if it cannot match the request. Also verify that capture settings allow that request to be stored.
Best Value
A request is present but has no response
Check whether the browser actually completed the request and whether the request was interrupted, failed, or still pending when inspected. A captured request without an associated response is not evidence of a successful server response.
HTTPS or proxy traffic is not captured as expected
Review the repository’s proxy and HTTPS-related setup for the installed version, then check your browser, proxy, and certificate environment. Avoid assuming that a configuration written for another environment will work unchanged.
A version upgrade breaks a previously working setup
Restore the last known-good pinned environment, then vary Python, Selenium, Selenium Wire, and browser components one at a time. Because the original repository is read-only, do not expect compatibility fixes for newer releases.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Or skip the browser setup
If your goal is a screenshot or PDF rather than inspecting Selenium-generated traffic, ScreenshotNeo provides a one-call screenshot API. It accepts a URL and returns a PNG, JPEG, WebP, or PDF. Cookie banners are accepted and removed, along with known consent platforms, newsletter popups, and chat widgets, before capture; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify the page verdict and billing status. An MCP server provides screenshot tools for Claude, Cursor, and other MCP clients.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots. Learn more at ScreenshotNeo, or sign up free for 1,000 screenshots a month with no card.
Choosing whether to use Selenium Wire
Selenium Wire remains relevant when a legacy test suite depends on its documented request capture or interception workflow, and your team can validate and maintain the pinned environment. For a new project, weigh that maintenance burden against the exact network-testing capabilities you need; the available evidence does not establish a verified successor or a universal replacement.
Frequently Asked Questions
Does Selenium Wire work with the latest Selenium and Python releases?
The archived project’s README lists Python 3.7+ and Selenium 4.0.0+ as historical baselines, but does not assure compatibility with current releases. Test the exact versions you plan to use.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsDoes Selenium Wire make a request when I call wait_for_request?
No. It waits for a matching request produced by an action in the browser; your code must perform that action.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

