Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 96b015a

Browse files
committed
Update CDP Mode
1 parent 5c146c5 commit 96b015a

File tree

3 files changed

+35
-32
lines changed

3 files changed

+35
-32
lines changed

‎seleniumbase/core/browser_launcher.py‎

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -519,16 +519,6 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
519519
import asyncio
520520
from seleniumbase.undetected.cdp_driver import cdp_util
521521

522-
if (
523-
hasattr(driver, "_is_using_cdp")
524-
and driver._is_using_cdp
525-
and hasattr(driver, "cdp")
526-
and driver.cdp
527-
):
528-
# CDP Mode was already initialized
529-
driver.disconnect()
530-
driver.cdp.open(url, **kwargs)
531-
return
532522
current_url = None
533523
try:
534524
current_url = driver.current_url
@@ -553,6 +543,23 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
553543
if url_protocol not in ["about", "data", "chrome"]:
554544
safe_url = False
555545

546+
if (
547+
hasattr(driver, "_is_using_cdp")
548+
and driver._is_using_cdp
549+
and hasattr(driver, "cdp")
550+
and driver.cdp
551+
and hasattr(driver.cdp, "loop")
552+
):
553+
# CDP Mode was already initialized
554+
driver.cdp.open(url, **kwargs)
555+
if not safe_url:
556+
time.sleep(constants.UC.CDP_MODE_OPEN_WAIT)
557+
if IS_WINDOWS:
558+
time.sleep(constants.UC.EXTRA_WINDOWS_WAIT)
559+
else:
560+
time.sleep(0.012)
561+
return
562+
556563
headless = False
557564
headed = None
558565
xvfb = None

‎seleniumbase/plugins/sb_manager.py‎

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,23 +1369,18 @@ def SB(
13691369
"%s%s%s%s%s"
13701370
% (c1, left_space, end_text, right_space, cr)
13711371
)
1372-
python3_12_or_newer = (sys.version_info >= (3, 12))
1373-
if undetectable:
1372+
if undetectable and hasattr(sb, "_drivers_browser_map"):
13741373
import asyncio
1375-
if not python3_12_or_newer and hasattr(sb_config, "_cdp_aclose"):
1376-
with suppress(Exception):
1377-
loop = asyncio.get_event_loop()
1378-
asyncio.set_event_loop(loop)
1379-
loop.run_until_complete(sb_config._cdp_aclose())
1380-
if python3_12_or_newer and hasattr(sb, "_drivers_browser_map"):
1381-
for driver in sb._drivers_browser_map.keys():
1382-
if hasattr(driver, "cdp") and driver.cdp:
1383-
asyncio.set_event_loop(driver.cdp.loop)
1384-
tasks = [tab.aclose() for tab in driver.cdp.get_tabs()]
1385-
tasks.append(driver.cdp.driver.connection.aclose())
1386-
driver.cdp.loop.run_until_complete(
1387-
asyncio.gather(*tasks)
1388-
)
1374+
for driver in sb._drivers_browser_map.keys():
1375+
if (
1376+
hasattr(driver, "cdp")
1377+
and driver.cdp
1378+
and hasattr(driver.cdp, "loop")
1379+
):
1380+
asyncio.set_event_loop(driver.cdp.loop)
1381+
tasks = [tab.aclose() for tab in driver.cdp.get_tabs()]
1382+
tasks.append(driver.cdp.driver.connection.aclose())
1383+
driver.cdp.loop.run_until_complete(asyncio.gather(*tasks))
13891384
driver.cdp.loop.close()
13901385
gc.collect()
13911386
if test and test_name and not test_passed and raise_test_failure:

‎seleniumbase/undetected/cdp_driver/connection.py‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
)
2020
import websockets
2121
from websockets.protocol import State
22-
from seleniumbase import config as sb_config
2322
from . import cdp_util as util
2423
import mycdp as cdp
2524
import mycdp.network
@@ -271,11 +270,10 @@ async def aopen(self, **kw):
271270
max_size=MAX_SIZE,
272271
)
273272
self.listener = Listener(self)
274-
sb_config._cdp_aclose = self.aclose
275273
except (Exception,) as e:
276274
logger.debug("Exception during opening of websocket: %s", e)
277275
if self.listener:
278-
self.listener.cancel()
276+
awaitself.listener.cancel()
279277
raise
280278
if not self.listener or not self.listener.running:
281279
self.listener = Listener(self)
@@ -300,7 +298,7 @@ async def aclose(self):
300298
self.websocket_url
301299
)
302300
if self.listener and self.listener.running:
303-
self.listener.cancel()
301+
awaitself.listener.cancel()
304302
self.enabled_domains.clear()
305303
logger.debug(
306304
"\n❌ Closed websocket connection to %s", self.websocket_url
@@ -446,7 +444,6 @@ async def send(
446444
if not _is_update:
447445
await self._register_handlers()
448446
await self.websocket.send(tx.message)
449-
sb_config._cdp_aclose = self.aclose
450447
try:
451448
return await tx
452449
except ProtocolException as e:
@@ -557,9 +554,13 @@ def time_before_considered_idle(self):
557554
def time_before_considered_idle(self, seconds: Union[int, float]):
558555
self._time_before_considered_idle = seconds
559556

560-
def cancel(self):
557+
asyncdef cancel(self):
561558
if self.task and not self.task.cancelled():
562559
self.task.cancel()
560+
try:
561+
await self.task
562+
except asyncio.CancelledError:
563+
pass
563564

564565
@property
565566
def running(self):

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /