The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →For a normal local Selenium session, do not set debuggerAddress. Create Chrome options and pass them to ChromeDriver; ChromeDriver will launch a new Chrome process. The capability is only for attaching to a Chrome instance that was already started with a DevTools debugging port. If you are using Selenium Grid, supply the Grid server URL to Remote WebDriver instead— that URL is not a debugger address.
What debuggerAddress actually controls
ChromeDriver supports two different session-creation patterns:
- Launch mode: ChromeDriver starts Chrome, loads its automation extension, and owns the new WebDriver session.
- Attach mode: ChromeDriver connects to an existing Chrome process through that process’s DevTools debugging server.
debuggerAddress belongs to the second pattern. It is a Chrome-specific capability containing a host and port such as 127.0.0.1:9222. It is not a required HTTP header, not a universal Selenium setting, and not the address of a Selenium Grid.
For a fresh local browser, leaving the capability out is the documented Selenium workflow. Selenium 4 uses browser-options objects for browser-specific capabilities, so the absence of debuggerAddress is intentional, not an incomplete configuration.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
Start a fresh local Chrome session
Python
Install Selenium 4 in the environment that will run the test:
python -m pip install -U selenium
This example launches Chrome, navigates to a page, reads its title, and closes the session. There is no debugger address anywhere in the configuration.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# Add ordinary Chrome arguments here only when you need them.
# options.add_argument("--headless=new")
with webdriver.Chrome(options=options) as driver:
driver.get("https://example.com")
print(driver.title)
webdriver.Chrome(options=options) starts a local ChromeDriver-managed session. Selenium Manager can obtain a compatible driver in current Selenium 4 releases; in a managed environment you can also place a matching ChromeDriver on PATH.
Java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class FreshChrome {
public static void main(String[] args) {
ChromeOptions options = new ChromeOptions();
// options.addArguments("--headless=new");
WebDriver driver = new ChromeDriver(options);
try {
driver.get("https://example.com");
System.out.println(driver.getTitle());
} finally {
driver.quit();
}
}
}
Do not add a capability named debuggerAddress to this launch-mode code. If you need a headless browser, proxy, user-agent, window size, or download preference, configure that through the appropriate ChromeOptions setting instead.
When attaching to an existing Chrome is appropriate
Attach mode is useful when another process has already launched Chrome and you must reuse that exact profile, logged-in state, or manually prepared window. The Chrome process must be started with remote debugging enabled, and ChromeDriver must be given the debugging host and port.
Rank #2
The exact launch command depends on your operating system and Chrome installation. Conceptually, it looks like this:
chrome --remote-debugging-port=9222 --user-data-dir=/tmp/selenium-profile
Then configure the capability through Chrome options:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=options)
try:
driver.get("https://example.com")
finally:
driver.quit()
Use a profile directory that is not simultaneously in use by your normal Chrome installation. Reusing a live personal profile can cause profile-lock errors, data corruption, or unexpected tabs. Also make sure the debugging port is reachable from the machine running ChromeDriver; a port exposed beyond the local machine can give other processes control of the browser.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesWhy attached sessions can fail on otherwise valid commands
ChromeDriver loads an automation extension when it launches a new Chrome session. That extension supports some WebDriver operations, including browser-window resizing. An already-running Chrome process was not started with that extension, so certain commands can be unavailable in attach mode.
A common symptom is an error containing operation not supported when using remote debugging. ChromeDriver’s documented remedy is to rewrite the test so it launches a new Chrome session: remove the debuggerAddress capability and create the driver normally. This is the most reliable fix when you do not genuinely need an existing browser.
Rank #3
Do not work around the message by changing the Grid URL or by sending debuggerAddress as a request header. Those are different connection layers.
Local ChromeDriver versus Selenium Grid
“Without a debugger address” can also be confused with remote execution. A Selenium Grid session uses a Remote WebDriver URL, such as the endpoint supplied by your Grid or hosted provider. Your client sends WebDriver commands to that server and supplies browser options describing the desired browser.
Python Remote WebDriver example
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
# options.add_argument("--headless=new")
driver = webdriver.Remote(
command_executor="http://grid-host:4444",
options=options,
)
try:
driver.get("https://example.com")
print(driver.title)
finally:
driver.quit()
Replace http://grid-host:4444 with the actual Grid URL for your environment. Do not put that URL in debuggerAddress; the Grid endpoint and Chrome’s DevTools endpoint are not interchangeable.
Java Remote WebDriver example
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
ChromeOptions options = new ChromeOptions();
WebDriver driver = new RemoteWebDriver(
new URL("http://grid-host:4444"), options);
try {
driver.get("https://example.com");
System.out.println(driver.getTitle());
} finally {
driver.quit();
}
The client still supplies an options instance for the browser. The Grid server then starts or allocates the browser on its node. Whether a node internally uses a debugging port is an implementation detail, not something your test should normally set.
Choosing the correct setup
| Goal | Driver construction | Set debuggerAddress? |
|---|---|---|
| Start a new local Chrome | webdriver.Chrome(options=options) or new ChromeDriver(options) |
No |
| Reuse an already running Chrome | Chrome options with the DevTools host and port | Yes |
| Run on Selenium Grid | Remote WebDriver with the Grid URL and options | No, unless a specific remote design explicitly requires attach mode |
Choose based on who owns the browser process. If ChromeDriver should create and control it, use launch mode. If another process must remain the owner, use attach mode and accept that some commands may not be available.
Rank #4
Troubleshooting checklist
“Chrome failed to start” or the driver exits immediately
- Confirm Chrome is installed and executable by the account running the test.
- Use Selenium 4 and a browser/driver combination supported by your environment.
- On a server, try the browser’s supported headless argument and provide a writable user-data directory.
- Check that another process is not locking the profile directory.
“cannot connect to chrome at 127.0.0.1:9222”
- Start Chrome with remote debugging enabled before constructing the driver.
- Verify the host and port in
debuggerAddressexactly match the running process. - Do not confuse the Chrome debugging port with the Grid’s WebDriver port.
- Ensure a firewall, container network, or namespace is not hiding the port from ChromeDriver.
“operation not supported when using remote debugging”
The session is attached to an existing Chrome without ChromeDriver’s startup automation extension. Remove debuggerAddress and launch a new session. If attachment is mandatory, redesign the test around commands available in that mode rather than assuming every launch-mode command will work.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →The test opens the wrong tab or profile
An attached browser may already contain several windows and tabs. Inspect the window handles and switch explicitly, or start a clean browser with a dedicated profile. Avoid attaching to a human’s everyday browser during automated tests.
The Grid session is rejected
Check the remote endpoint, credentials, network route, and browser options expected by the Grid provider. A Grid URL belongs in webdriver.Remote or RemoteWebDriver; putting it in Chrome’s debuggerAddress capability produces the wrong protocol flow.
Reliability and maintenance considerations
Launch mode gives each test a clearly defined browser owner and a repeatable starting state. Use a temporary profile, create the driver in setup, and call quit() in teardown. This avoids stale tabs and state leaking between tests.
Attach mode can preserve valuable state, but it couples the test to an external process, its lifetime, its profile, and its port. A manually closed browser, a changed port, or a profile lock can invalidate the session before the first assertion. It also has the documented command limitations caused by the missing startup extension. There is no official general performance or reliability ranking between the two modes; select the mode that matches your ownership requirement.
Recommended Free Tools
Best Value
Or skip the browser setup
If your actual requirement is to obtain a clean image or PDF of a URL—not to interact with a live WebDriver session—ScreenshotNeo provides a one-request screenshot API. Its cleanup steps accept cookie or consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the page verdict and billing status in headers.
cURL (see the ScreenshotNeo API documentation):
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 with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. Every plan includes its features; 1,000 screenshots per month are free without a card, and paid plans start at $5 for 3,000 screenshots. If that fits your task, sign up for the free 1,000-screenshot plan.
Frequently Asked Questions
Can I omit all Chrome options as well as debuggerAddress?
Yes. Selenium can construct a default Chrome session, although an explicit options object is useful when you need headless mode, a profile, proxy, or other browser settings.
Does removing debuggerAddress log me out of websites?
A newly launched session normally uses a fresh or test profile, so it will not inherit the cookies from an already running personal Chrome profile. If preserving that state is essential, attach deliberately or provide a controlled profile.
Free tools Windows power users keep installed
One-click scans. No signup required.
Is a DevTools port the same as a WebDriver port?
No. The DevTools port is used by ChromeDriver to attach to Chrome; a WebDriver or Grid URL is the server endpoint that accepts Selenium commands.
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.

