{"record":{"id":"df83f33cb85f88da","repo":"SeleniumHQ/selenium","slug":"port-must-be-0-65535","errorCode":null,"errorMessage":"port must be 0-65535","messagePattern":"port must be 0-65535","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"py/selenium/webdriver/remote/server.py","lineNumber":114,"sourceCode":"\n    @path.setter\n    def path(self, path):\n        if path and not os.path.exists(path):\n            raise OSError(f\"Can't find server .jar located at {path}\")\n        self._path = path\n\n    @property\n    def port(self):\n        return self._port\n\n    @port.setter\n    def port(self, port):\n        try:\n            port = int(port)\n        except ValueError:\n            raise TypeError(f\"{__class__.__name__}.__init__() got an invalid port: '{port}'\")\n        if not (0 <= port <= 65535):\n            raise ValueError(\"port must be 0-65535\")\n        self._port = port\n\n    @property\n    def version(self):\n        return self._version\n\n    @version.setter\n    def version(self, version):\n        if version:\n            if not re.match(r\"^\\d+\\.\\d+\\.\\d+$\", str(version)):\n                raise TypeError(f\"{__class__.__name__}.__init__() got an invalid version: '{version}'\")\n        self._version = version\n\n    @property\n    def log_level(self):\n        return self._log_level\n\n    @log_level.setter","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/py/selenium/webdriver/remote/server.py#L96-L132","documentation":"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.","triggerScenarios":"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.","commonSituations":"Configuration typos adding extra digits. Misunderstanding of valid port ranges. Accidentally passing a PID or other large number as a port.","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"],"exampleFix":"// before\nserver = Server(port=99999)\n\n// after\nserver = Server(port=4444)\n# or let OS choose:\nserver = Server(port=0)","handlingStrategy":"validation","validationCode":"port = int(os.environ.get('PORT', 4444))\nif not (0 <= port <= 65535):\n    raise ValueError(f'Port out of range: {port}')\nserver = Server(port=port)","typeGuard":"def is_valid_port(port: int) -> bool:\n    return isinstance(port, int) and 0 <= port <= 65535","tryCatchPattern":"try:\n    server = Server(port=port)\nexcept ValueError:\n    server = Server(port=4444)  # fallback to default","preventionTips":["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"],"tags":["remote","server","port","range-validation","value-error"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}