From 3fc6e2532ff4b6ed11539132ada60029781f4dbf Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Tue, 1 Apr 2025 01:19:14 -0400 Subject: [PATCH] shu/fix cdp connect with browser path (#2057) --- skyvern/agent/agent.py | 6 +++--- skyvern/webeye/browser_factory.py | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/skyvern/agent/agent.py b/skyvern/agent/agent.py index a753dabc..3e88aa2a 100644 --- a/skyvern/agent/agent.py +++ b/skyvern/agent/agent.py @@ -44,10 +44,10 @@ class SkyvernAgent: # TODO validate browser_path # Supported Browsers: Google Chrome, Brave Browser, Microsoft Edge, Firefox if "Chrome" in browser_path or "Brave" in browser_path or "Edge" in browser_path: - result = subprocess.run( - ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", "--remote-debugging-port=9222"] + self.browser_process = subprocess.Popen( + [browser_path, "--remote-debugging-port=9222"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ) - if result.returncode != 0: + if self.browser_process.poll() is not None: raise Exception(f"Failed to open browser. browser_path: {browser_path}") self.cdp_url = "http://127.0.0.1:9222" diff --git a/skyvern/webeye/browser_factory.py b/skyvern/webeye/browser_factory.py index 86f886e7..c39d240b 100644 --- a/skyvern/webeye/browser_factory.py +++ b/skyvern/webeye/browser_factory.py @@ -417,7 +417,13 @@ class BrowserState: pages = self.browser_context.pages for page in pages: if page != cur_page: - await page.close() + try: + async with asyncio.timeout(2): + await page.close() + except asyncio.TimeoutError: + LOG.warning("Timeout to close the page. Skip closing the page", url=page.url) + except Exception: + LOG.exception("Error while closing the page", url=page.url) async def check_and_fix_state( self,