diff --git a/seleniumbase/__version__.py b/seleniumbase/__version__.py index 4f97fbfbf70..bea7b1e3230 100755 --- a/seleniumbase/__version__.py +++ b/seleniumbase/__version__.py @@ -1,2 +1,2 @@ # seleniumbase package -__version__ = "4.37.9" +__version__ = "4.37.10" diff --git a/seleniumbase/plugins/sb_manager.py b/seleniumbase/plugins/sb_manager.py index 70491d40cfa..330dbba387c 100644 --- a/seleniumbase/plugins/sb_manager.py +++ b/seleniumbase/plugins/sb_manager.py @@ -1369,12 +1369,15 @@ def SB( "%s%s%s%s%s" % (c1, left_space, end_text, right_space, cr) ) - if hasattr(sb_config, "_cdp_aclose"): + if undetectable and hasattr(sb, "_drivers_browser_map"): import asyncio - with suppress(Exception): - loop = asyncio.get_event_loop() - asyncio.set_event_loop(loop) - loop.run_until_complete(sb_config._cdp_aclose()) + for driver in sb._drivers_browser_map.keys(): + if hasattr(driver, "cdp") and driver.cdp: + asyncio.set_event_loop(driver.cdp.loop) + tasks = [tab.aclose() for tab in driver.cdp.get_tabs()] + tasks.append(driver.cdp.driver.connection.aclose()) + driver.cdp.loop.run_until_complete(asyncio.gather(*tasks)) + driver.cdp.loop.close() gc.collect() if test and test_name and not test_passed and raise_test_failure: raise exception diff --git a/seleniumbase/undetected/cdp_driver/connection.py b/seleniumbase/undetected/cdp_driver/connection.py index 5b146526691..b3a91af3db9 100644 --- a/seleniumbase/undetected/cdp_driver/connection.py +++ b/seleniumbase/undetected/cdp_driver/connection.py @@ -19,7 +19,6 @@ ) import websockets from websockets.protocol import State -from seleniumbase import config as sb_config from . import cdp_util as util import mycdp as cdp import mycdp.network @@ -271,7 +270,6 @@ async def aopen(self, **kw): max_size=MAX_SIZE, ) self.listener = Listener(self) - sb_config._cdp_aclose = self.aclose except (Exception,) as e: logger.debug("Exception during opening of websocket: %s", e) if self.listener: @@ -446,7 +444,6 @@ async def send( if not _is_update: await self._register_handlers() await self.websocket.send(tx.message) - sb_config._cdp_aclose = self.aclose try: return await tx except ProtocolException as e: diff --git a/seleniumbase/undetected/cdp_driver/tab.py b/seleniumbase/undetected/cdp_driver/tab.py index 5bc4804f375..95f6f77ab75 100644 --- a/seleniumbase/undetected/cdp_driver/tab.py +++ b/seleniumbase/undetected/cdp_driver/tab.py @@ -879,6 +879,7 @@ async def close(self): await self.send( cdp.target.close_target(target_id=self.target.target_id) ) + await self.aclose() await asyncio.sleep(0.1) async def get_window(self) -> Tuple[