The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
“Indicates there was a problem communicating with the browser being controlled or the Selenium server.” That is Selenium’s definition of UnreachableBrowserException. It is a communication failure between your test, the Selenium server or driver, and the browser—not a synonym for every timeout, missing element, or setup error.
First determine where the browser runs. With a local driver, check whether the browser process exited or crashed. With RemoteWebDriver, verify that the configured Selenium server URL is correct and reachable from the test process. Those two checks address the exception’s documented common causes: an invalid remote address and a browser that died during the test.
What the exception means
The exception is raised when Selenium can no longer communicate with the controlled browser or with the Selenium server that controls it. The same top-level message can result from different failures along that path, so increasing a wait or changing a browser flag without evidence is unlikely to be a reliable fix.
Use four facts to classify the failure:
- Execution location: local browser process or remote Selenium service.
- Timing: failure while creating a session, or after a session was already running.
- Scope: one browser/driver combination or every browser.
- Evidence: endpoint reachability, process state, and driver/browser logs.
Step 1: Preserve the evidence
Before rerunning, save the complete exception text and stack trace. Record:
#1 Best Overall
- Language binding and Selenium version.
- Browser name and exact version.
- Driver version, if one is installed explicitly.
- Operating system and whether the run is local, remote, containerized, or hosted.
- The test name, command being executed, and the time of failure.
Do not replace the original stack trace with a shortened message. The first transport error and the final Selenium call often point to different layers.
Step 2: Check the execution path
RemoteWebDriver: validate the Selenium server address
For a remote run, inspect the URL passed to RemoteWebDriver. Confirm the hostname, port, and path exactly match the service configuration. A typo, wrong port, stale grid address, or path intended for a different Selenium deployment can make the browser appear unreachable.
- Print or otherwise inspect the endpoint used by the test process.
- From the same machine, container, or CI worker that runs the test, check DNS resolution and TCP connectivity to that host and port.
- Confirm the remote Selenium service is running and accepting new commands.
- Check reverse proxies, firewalls, security groups, and network policies between the runner and the service.
- Review the server log at the exact failure time for session creation, node loss, or a disconnected browser.
Testing the URL from your laptop is not sufficient when the test runs in CI; reachability must be established from the test process’s network environment.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, 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 minuteRank #2
Local browser: determine whether the process died
When the driver and browser run on the same host, inspect the browser process around the failure. A crash, forced termination, operating-system resource limit, profile lock, or security policy can end the process while Selenium still has an active session.
- Check whether the browser process disappears immediately before the exception.
- Collect browser crash reports and driver logs.
- Inspect operating-system event logs, container logs, and memory or disk pressure.
- Check whether endpoint security software is terminating the browser or driver.
If the failure occurs during startup rather than after navigation, also verify that the browser executable can be launched and that the driver can be discovered. Selenium Manager is supported in Selenium 4.6 and later and can resolve drivers in many standard installations; custom paths and restricted environments may still require explicit configuration.
Step 3: Compare browsers and inspect logs
Run the same minimal command with another supported browser, keeping the test, host, and timing as similar as possible. If only one browser fails, an underlying browser-driver interaction becomes more plausible. If all browsers fail at the same point, investigate the remote service, network, host restrictions, or shared test infrastructure first.
Rank #3
Enable the language binding, driver, and Selenium server logs appropriate to your deployment. Look for:
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errors- Session creation failures and rejected capabilities.
- Driver messages immediately before the browser exits.
- Connection resets, refused connections, or proxy errors.
- Node registration loss or a remote service restart.
- Resource exhaustion or policy-denied executable launches.
When the evidence points to Selenium itself, use the project’s troubleshooting and bug-report guidance and attach a minimal reproduction, complete logs, versions, and the execution topology.
Adjacent branch: startup and driver configuration errors
Browser/driver version mismatch, missing executables, system-level restrictions, and malformed configuration are documented causes of related session-creation and driver-discovery errors. Check this branch when the failure happens before a usable session exists or when logs explicitly mention driver startup. Do not assume these issues explain every UnreachableBrowserException; a browser that dies mid-session or an unreachable remote server requires different evidence.
Rank #4
Check compatibility and discovery
- Confirm the browser version and the driver version are compatible with each other and with your Selenium binding.
- Verify the driver executable is on the expected
PATH, or configure its full path deliberately. - Ensure the browser binary exists at the configured location and is executable by the test account.
- Review container images and CI workers for missing shared libraries, sandbox restrictions, or read-only profile directories.
- After changing versions, record the new versions and rerun the smallest possible session-creation test.
If the session starts successfully and fails later, return to process state, endpoint reachability, and logs rather than repeatedly changing driver versions.
Adjacent branch: waits and synchronization
Slow pages and elements that are not yet present can produce timeouts or flaky interactions, but waits do not restore communication with a dead browser or unavailable Selenium server. Use a wait for the actual application condition only when the browser remains alive and the transport connection is healthy.
Recommended Free Tools
Use one coherent wait strategy
Prefer an explicit wait for a specific condition, such as an element becoming visible or clickable, instead of an arbitrary sleep. Selenium warns that mixing implicit and explicit waits can create unpredictable timing. Set the implicit wait to zero when using explicit waits consistently, and keep the condition tied to the page state your test needs.
Best Value
A larger timeout is appropriate only when logs show a live browser and a genuinely slow condition. It is not a fix for connection refusal, a terminated process, or a lost remote node.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Special case: JDK HttpClient timeout behavior
Selenium issue reports include one case associated with JDK HttpClient timeout behavior. Treat that report as a case study, not as a universal default timeout or a general explanation for this exception. Only investigate this path when your stack trace, Java runtime, and timing match the reported behavior. Capture the JDK version and HTTP-client configuration before changing them.
A practical decision tree
- Did it fail before session creation? Check the remote endpoint, executable discovery, capabilities, browser/driver compatibility, and host restrictions.
- Did a session exist and then become unreachable? Check whether the browser process crashed or was killed; inspect driver, browser, and server logs.
- Is the run remote? Prove endpoint reachability from the test runner and verify the Selenium service and node are accepting commands.
- Does only one browser fail? Compare another browser to isolate a browser-driver issue.
- Is the browser alive and the page merely slow? Add an explicit wait for the actual condition, without mixing wait types.
- Can you reproduce it minimally? Reduce the test to session creation, one navigation, and one command, then attach versions and logs to a Selenium issue if necessary.
Reliability and prevention
- Pin and document browser, driver, Selenium, language-runtime, and operating-system versions in CI.
- Use a dedicated, writable browser profile per parallel session.
- Monitor memory, disk, process limits, and container restarts on browser hosts.
- Keep the remote Selenium endpoint inside the same tested network path as the runner.
- Archive driver and server logs with each failed job.
- Run a small browser-health check before a large suite so infrastructure failures are separated from application failures.
Or skip the browser setup
If your goal is simply to obtain a clean website screenshot rather than drive an interactive Selenium session, ScreenshotNeo provides a single HTTP request. It accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.
cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python:
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js:
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
ScreenshotNeo also offers an MCP server for Claude, Cursor, and other MCP clients, with take_screenshot, get_page_info, and capture_pdf tools. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. See the ScreenshotNeo documentation, then sign up free.
Frequently Asked Questions
Does this exception always mean the browser crashed?
No. Selenium also defines it for communication problems with a Selenium server, including an invalid or unreachable RemoteWebDriver endpoint.
Should I add an implicit wait to stop the error?
Only use waits for a live browser handling a slow application condition. A wait cannot repair a lost browser or server connection, and mixing implicit and explicit waits can create unpredictable timing.
What information should accompany a Selenium bug report?
Include the complete stack trace, a minimal reproduction, language and Selenium versions, browser and driver versions, operating system, execution location, and relevant client, driver, browser, and server logs.
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.

