Skip to content

Commit 1c0987b

Browse files
committed
Update CDP Mode
1 parent 5bde4aa commit 1c0987b

File tree

3 files changed

+55
-16
lines changed

3 files changed

+55
-16
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,6 +1251,10 @@ def _uc_gui_click_captcha(
12511251
)
12521252
):
12531253
frame = '[data-testid*="challenge-"] div'
1254+
elif driver.is_element_present(
1255+
"form.turnstile div#turnstile-widget div:not([class])"
1256+
):
1257+
frame = "form.turnstile #turnstile-widget div:not([class])"
12541258
elif driver.is_element_present(
12551259
'form div:not([class]):has(input[name*="cf-turn"])'
12561260
):
@@ -1291,6 +1295,23 @@ def _uc_gui_click_captcha(
12911295
driver.cdp.evaluate(script)
12921296
else:
12931297
driver.execute_script(script)
1298+
elif (
1299+
driver.is_element_present("form")
1300+
and driver.is_element_present(
1301+
"form.turnstile #turnstile-widget > div:not([class])"
1302+
)
1303+
):
1304+
script = (
1305+
"""var $elements = document.querySelectorAll(
1306+
'form.turnstile #turnstile-widget');
1307+
var index = 0, length = $elements.length;
1308+
for(; index < length; index++){
1309+
$elements[index].setAttribute('align', 'left');}"""
1310+
)
1311+
if __is_cdp_swap_needed(driver):
1312+
driver.cdp.evaluate(script)
1313+
else:
1314+
driver.execute_script(script)
12941315
if not is_in_frame or needs_switch:
12951316
# Currently not in frame (or nested frame outside CF one)
12961317
try:

seleniumbase/undetected/__init__.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -452,14 +452,19 @@ def reconnect(self, timeout=0.1):
452452
self.service.start()
453453
with suppress(Exception):
454454
self.start_session()
455+
time.sleep(0.0075)
455456
with suppress(Exception):
456-
if self.current_url.startswith("chrome-extension://"):
457-
self.close()
458-
if self.service.is_connectable():
459-
self.stop_client()
460-
self.service.stop()
461-
self.service.start()
462-
self.start_session()
457+
for i in range(5):
458+
if self.current_url.startswith("chrome-extension://"):
459+
self.close()
460+
if self.service.is_connectable():
461+
self.stop_client()
462+
self.service.stop()
463+
self.service.start()
464+
self.start_session()
465+
time.sleep(0.0075)
466+
else:
467+
break
463468
self._is_connected = True
464469

465470
def disconnect(self):
@@ -480,14 +485,19 @@ def connect(self):
480485
self.service.start()
481486
with suppress(Exception):
482487
self.start_session()
488+
time.sleep(0.0075)
483489
with suppress(Exception):
484-
if self.current_url.startswith("chrome-extension://"):
485-
self.close()
486-
if self.service.is_connectable():
487-
self.stop_client()
488-
self.service.stop()
489-
self.service.start()
490-
self.start_session()
490+
for i in range(5):
491+
if self.current_url.startswith("chrome-extension://"):
492+
self.close()
493+
if self.service.is_connectable():
494+
self.stop_client()
495+
self.service.stop()
496+
self.service.start()
497+
self.start_session()
498+
time.sleep(0.0075)
499+
else:
500+
break
491501
self._is_connected = True
492502

493503
def start_session(self, capabilities=None):

seleniumbase/undetected/cdp_driver/cdp_util.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,11 @@ async def start_async(*args, **kwargs) -> Browser:
226226
binary_location = None
227227
if "browser_executable_path" in kwargs:
228228
binary_location = kwargs["browser_executable_path"]
229-
if shared_utils.is_chrome_130_or_newer(binary_location):
229+
if (
230+
shared_utils.is_chrome_130_or_newer(binary_location)
231+
and "user_data_dir" in kwargs
232+
and kwargs["user_data_dir"]
233+
):
230234
if "headless" in kwargs:
231235
headless = kwargs["headless"]
232236
decoy_args = kwargs
@@ -257,7 +261,11 @@ def start_sync(*args, **kwargs) -> Browser:
257261
binary_location = None
258262
if "browser_executable_path" in kwargs:
259263
binary_location = kwargs["browser_executable_path"]
260-
if shared_utils.is_chrome_130_or_newer(binary_location):
264+
if (
265+
shared_utils.is_chrome_130_or_newer(binary_location)
266+
and "user_data_dir" in kwargs
267+
and kwargs["user_data_dir"]
268+
):
261269
if "headless" in kwargs:
262270
headless = kwargs["headless"]
263271
decoy_args = kwargs

0 commit comments

Comments
 (0)