diff --git a/python/packages/autogen-ext/src/autogen_ext/agents/web_surfer/playwright_controller.py b/python/packages/autogen-ext/src/autogen_ext/agents/web_surfer/playwright_controller.py index 90a830be049f..62d76007c004 100644 --- a/python/packages/autogen-ext/src/autogen_ext/agents/web_surfer/playwright_controller.py +++ b/python/packages/autogen-ext/src/autogen_ext/agents/web_surfer/playwright_controller.py @@ -8,7 +8,7 @@ from typing import Any, Callable, Dict, Optional, Tuple, Union, cast from playwright._impl._errors import Error as PlaywrightError -from playwright._impl._errors import TimeoutError +from playwright._impl._errors import TimeoutError, TargetClosedError from playwright.async_api import Download, Page from ._types import ( @@ -83,7 +83,11 @@ async def sleep(self, page: Page, duration: Union[int, float]) -> None: duration (Union[int, float]): The duration to sleep in milliseconds. """ assert page is not None - await page.wait_for_timeout(duration * 1000) + try: + await page.wait_for_timeout(duration * 1000) + except (TargetClosedError, PlaywrightError): + # Target closed (browser, context, or page) — safely skip sleeping + print("[PlaywrightController] sleep skipped: Target closed during sleep.") async def get_interactive_rects(self, page: Page) -> Dict[str, InteractiveRegion]: """