Skip to content

Commit 74c95d3

Browse files
authored
Merge pull request #4313 from seleniumbase/cdp-mode-patch-103
CDP Mode: Patch 103
2 parents 1428c3d + 570ccb7 commit 74c95d3

File tree

6 files changed

+48
-22
lines changed

6 files changed

+48
-22
lines changed

mkdocs_build/requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# mkdocs dependencies for generating the seleniumbase.io website
22
# Minimum Python version: 3.10 (for generating docs only)
33

4-
regex>=2026.2.28
5-
pymdown-extensions>=10.21
4+
regex>=2026.3.32
5+
pymdown-extensions>=10.21.2
66
pipdeptree>=2.34.0
77
python-dateutil>=2.8.2
88
Markdown==3.10.2

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ parse>=1.21.1
2424
parse-type>=0.6.6
2525
colorama>=0.4.6
2626
pyyaml>=6.0.3
27-
pygments>=2.19.2
27+
pygments>=2.20.0
2828
pyreadline3>=3.5.4;platform_system=="Windows"
2929
tabcompleter>=1.4.0
3030
pdbp>=1.8.2
@@ -33,7 +33,7 @@ charset-normalizer>=3.4.6,<4
3333
urllib3>=1.26.20,<2;python_version<"3.10"
3434
urllib3>=1.26.20,<3;python_version>="3.10"
3535
requests~=2.32.5;python_version<"3.10"
36-
requests~=2.33.0;python_version>="3.10"
36+
requests~=2.33.1;python_version>="3.10"
3737
sniffio==1.3.1
3838
h11==0.16.0
3939
outcome==1.3.0.post0

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.47.8"
2+
__version__ = "4.47.9"

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

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@
172172
'parse-type>=0.6.6',
173173
'colorama>=0.4.6',
174174
'pyyaml>=6.0.3',
175-
'pygments>=2.19.2',
175+
'pygments>=2.20.0',
176176
'pyreadline3>=3.5.4;platform_system=="Windows"',
177177
'tabcompleter>=1.4.0',
178178
'pdbp>=1.8.2',
@@ -181,7 +181,7 @@
181181
'urllib3>=1.26.20,<2;python_version<"3.10"',
182182
'urllib3>=1.26.20,<3;python_version>="3.10"',
183183
'requests~=2.32.5;python_version<"3.10"',
184-
'requests~=2.33.0;python_version>="3.10"',
184+
'requests~=2.33.1;python_version>="3.10"',
185185
'sniffio==1.3.1',
186186
'h11==0.16.0',
187187
'outcome==1.3.0.post0',

0 commit comments

Comments
 (0)