{"record":{"id":"a2ef82b714688863","repo":"NanmiCoder/MediaCrawler","slug":"browser-not-connected","errorCode":null,"errorMessage":"Browser not connected","messagePattern":"Browser not connected","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"tools/cdp_browser.py","lineNumber":367,"sourceCode":"                utils.logger.info(\"[CDPBrowserManager] Successfully connected to browser\")\n                utils.logger.info(\n                    f\"[CDPBrowserManager] Browser contexts count: {len(self.browser.contexts)}\"\n                )\n            else:\n                raise RuntimeError(\"CDP connection failed\")\n\n        except Exception as e:\n            utils.logger.error(f\"[CDPBrowserManager] CDP connection failed: {e}\")\n            raise\n\n    async def _create_browser_context(\n        self, playwright_proxy: Optional[Dict] = None, user_agent: Optional[str] = None\n    ) -> BrowserContext:\n        \"\"\"\n        Create or get browser context\n        \"\"\"\n        if not self.browser:\n            raise RuntimeError(\"Browser not connected\")\n\n        # Get existing context or create new context\n        contexts = self.browser.contexts\n\n        if contexts:\n            # Use existing first context\n            browser_context = contexts[0]\n            utils.logger.info(\"[CDPBrowserManager] Using existing browser context\")\n        else:\n            # Create new context\n            context_options = {\n                \"viewport\": {\"width\": 1920, \"height\": 1080},\n                \"accept_downloads\": True,\n            }\n\n            # Set user agent\n            if user_agent:\n                context_options[\"user_agent\"] = user_agent","sourceCodeStart":349,"sourceCodeEnd":385,"githubUrl":"https://github.com/NanmiCoder/MediaCrawler/blob/d6f7c5bb906b6dac40ddf343ef9e26438a3de092/tools/cdp_browser.py#L349-L385","documentation":"Error \"Browser not connected\" thrown in NanmiCoder/MediaCrawler.","triggerScenarios":"Thrown at tools/cdp_browser.py:367 when the library encounters an invalid state.","commonSituations":"_create_browser_context was called while self.browser is None, i.e. launch/connect was skipped or a previous CDP connection failed silently. Defensive fix: guard all public entry points with a connection check that raises this error early, and ensure the manager always attempts launch_or_connect before context creation.","solutions":["Call the browser launch/connect step first: the CDPBrowserManager must complete _connect_via_cdp before creating a context or page.","Check earlier logs for a failed CDP connection; fix that error (port mismatch, browser not started) and retry.","Do not reuse the manager after the browser process was killed externally; relaunch and reconnect.","Verify self.browser is set and browser.is_connected() returns true before requesting a new context."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d6f7c5bb906b6dac40ddf343ef9e26438a3de092","analyzedAt":"2026-08-15T01:39:07.505Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}