SeleniumHQ/selenium · error · ValueError
port must be 0-65535
Error message
port must be 0-65535
What it means
Raised as ValueError by the Server.port setter after a successful int() conversion if the resulting port is outside the valid TCP range 0-65535. This is a range validation that runs after the type conversion check, catching numerically valid but semantically invalid port numbers.
Source
Thrown at py/selenium/webdriver/remote/server.py:114
@path.setter
def path(self, path):
if path and not os.path.exists(path):
raise OSError(f"Can't find server .jar located at {path}")
self._path = path
@property
def port(self):
return self._port
@port.setter
def port(self, port):
try:
port = int(port)
except ValueError:
raise TypeError(f"{__class__.__name__}.__init__() got an invalid port: '{port}'")
if not (0 <= port <= 65535):
raise ValueError("port must be 0-65535")
self._port = port
@property
def version(self):
return self._version
@version.setter
def version(self, version):
if version:
if not re.match(r"^\d+\.\d+\.\d+$", str(version)):
raise TypeError(f"{__class__.__name__}.__init__() got an invalid version: '{version}'")
self._version = version
@property
def log_level(self):
return self._log_level
@log_level.setterView on GitHub (pinned to aa36b38e69)
Solutions
- Use a port in the standard range: Server(port=4444) (the default)
- Validate the port range before passing: assert 0 <= port <= 65535
- Use ephemeral port 0 if you want the OS to assign a free port automatically
Example fix
// before server = Server(port=99999) // after server = Server(port=4444) # or let OS choose: server = Server(port=0)
Defensive patterns
Strategy: validation
Validate before calling
port = int(os.environ.get('PORT', 4444))
if not (0 <= port <= 65535):
raise ValueError(f'Port out of range: {port}')
server = Server(port=port) Type guard
def is_valid_port(port: int) -> bool:
return isinstance(port, int) and 0 <= port <= 65535 Try / catch
try:
server = Server(port=port)
except ValueError:
server = Server(port=4444) # fallback to default Prevention
- Validate port is in range 0-65535 before passing
- Use port 0 to let the OS assign a free port
- Double-check port configuration for typos adding extra digits
When it happens
Trigger: Calling Server(port=70000), Server(port=-1), Server(port=99999), or Server(port='70000') triggers the ValueError. The port converts to int fine but fails the 0-65535 bounds check.
Common situations: Configuration typos adding extra digits. Misunderstanding of valid port ranges. Accidentally passing a PID or other large number as a port.
Related errors
- {__class__.__name__}.__init__() got an invalid port: '{port}
- Not allowed to specify a version when using an existing serv
- Can't find server .jar located at {path}
- {__class__.__name__}.__init__() got an invalid version: '{ve
- Invalid URL: ${aUrl}
AI-assisted analysis of SeleniumHQ/selenium@aa36b38e69 (2026-08-14).
Data as JSON: /api/errors/df83f33cb85f88da.
Report an issue: GitHub.