Skip to content

Commit 872c18d

Browse files
committed
Update CDP Mode
1 parent 1428c3d commit 872c18d

File tree

2 files changed

+41
-15
lines changed

2 files changed

+41
-15
lines changed

seleniumbase/core/sb_cdp.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,11 @@ def press_keys(self, selector, text, timeout=None):
10681068
):
10691069
text = text.replace("\n", "\r")
10701070
for key in text:
1071-
element.send_keys(key)
1071+
try:
1072+
element.send_keys(key)
1073+
except AttributeError:
1074+
element = self.select(selector, timeout=0.1)
1075+
element.send_keys(key)
10721076
time.sleep(float(0.042 + (random.random() / 110.0)))
10731077
if submit:
10741078
element.send_keys("\r\n")

seleniumbase/undetected/cdp_driver/config.py

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import logging
23
import os
34
import pathlib
@@ -88,19 +89,19 @@ def __init__(
8889
if not browser_args:
8990
browser_args = []
9091
if not user_data_dir:
91-
self.user_data_dir = temp_profile_dir()
92+
self.user_data_dir = temp_profile_dir(proxy=proxy)
9293
self._user_data_dir = self.user_data_dir
9394
self._custom_data_dir = False
9495
else:
9596
self.user_data_dir = user_data_dir
9697
profile = os.path.join(self.user_data_dir, "Default")
9798
preferences_file = os.path.join(profile, "Preferences")
98-
preferences = get_default_preferences()
99+
preferences = get_default_preferences(proxy=proxy)
99100
if not os.path.exists(profile):
100101
with suppress(Exception):
101102
os.makedirs(profile)
102-
with open(preferences_file, "w") as f:
103-
f.write(preferences)
103+
with open(preferences_file, "w", encoding="utf-8") as f:
104+
json.dump(preferences, f)
104105
mock_keychain = False
105106
if not browser_executable_path:
106107
browser_executable_path = find_chrome_executable()
@@ -343,25 +344,46 @@ def is_root():
343344
return ctypes.windll.shell32.IsUserAnAdmin() != 0
344345

345346

346-
def get_default_preferences():
347-
return (
348-
"""{"credentials_enable_service": false,
349-
"password_manager_enabled": false,
350-
"password_manager_leak_detection": false}"""
351-
)
347+
def get_default_preferences(proxy=None):
348+
prefs = {
349+
"profile": {
350+
"password_manager_leak_detection": False,
351+
"password_manager_enabled": False
352+
},
353+
"credentials_enable_service": False,
354+
"omnibox-max-zero-suggest-matches": 0,
355+
"omnibox-zero-suggest-prefetching": 0,
356+
"omnibox-zero-suggest-prefetching-on-srp": 0,
357+
"omnibox-zero-suggest-prefetching-on-web": 0,
358+
"omnibox-zero-suggest-in-memory-caching": 0,
359+
"local_discovery": {
360+
"notifications_enabled": False
361+
},
362+
"autofill": {
363+
"profile_enabled": False,
364+
"credit_card_enabled": False
365+
}
366+
}
367+
if proxy:
368+
prefs["webrtc"] = {
369+
"ip_handling_policy": "disable_non_proxied_udp",
370+
"multiple_routes_enabled": False,
371+
"nonproxied_udp_enabled": False
372+
}
373+
return prefs
352374

353375

354-
def temp_profile_dir():
376+
def temp_profile_dir(proxy=None):
355377
"""Generate a temp dir (path)"""
356378
path = os.path.normpath(tempfile.mkdtemp(prefix="uc_"))
357379
profile = os.path.join(path, "Default")
358380
preferences_file = os.path.join(profile, "Preferences")
359-
preferences = get_default_preferences()
381+
preferences = get_default_preferences(proxy=proxy)
360382
if not os.path.exists(profile):
361383
with suppress(Exception):
362384
os.makedirs(profile)
363-
with open(preferences_file, "w") as f:
364-
f.write(preferences)
385+
with open(preferences_file, "w", encoding="utf-8") as f:
386+
json.dump(preferences, f)
365387
return path
366388

367389

0 commit comments

Comments
 (0)