Skip to content

Commit dbf8286

Browse files
committed
Update UC Mode
1 parent c6eace1 commit dbf8286

File tree

3 files changed

+100
-77
lines changed

3 files changed

+100
-77
lines changed

seleniumbase/fixtures/base_case.py

+87-49
Original file line numberDiff line numberDiff line change
@@ -4090,6 +4090,88 @@ def get_new_driver(
40904090
"Browser: {%s} is not a valid browser option. "
40914091
"Valid options = {%s}" % (browser, valid_browsers)
40924092
)
4093+
# Fix Chrome-130 issues by creating a user-data-dir in advance
4094+
if (
4095+
undetectable
4096+
and (
4097+
not user_data_dir
4098+
or not os.path.exists(user_data_dir)
4099+
or not any(os.scandir(user_data_dir))
4100+
)
4101+
and self.browser == "chrome"
4102+
):
4103+
import tempfile
4104+
if not user_data_dir:
4105+
user_data_dir = os.path.normpath(tempfile.mkdtemp())
4106+
self.user_data_dir = user_data_dir
4107+
sb_config.user_data_dir = user_data_dir
4108+
try:
4109+
decoy_driver = browser_launcher.get_driver(
4110+
browser_name=browser_name,
4111+
headless=headless,
4112+
locale_code=locale_code,
4113+
use_grid=use_grid,
4114+
protocol=protocol,
4115+
servername=servername,
4116+
port=port,
4117+
proxy_string=proxy_string,
4118+
proxy_bypass_list=proxy_bypass_list,
4119+
proxy_pac_url=proxy_pac_url,
4120+
multi_proxy=multi_proxy,
4121+
user_agent=user_agent,
4122+
cap_file=cap_file,
4123+
cap_string=cap_string,
4124+
recorder_ext=recorder_ext,
4125+
disable_cookies=disable_cookies,
4126+
disable_js=disable_js,
4127+
disable_csp=disable_csp,
4128+
enable_ws=enable_ws,
4129+
enable_sync=enable_sync,
4130+
use_auto_ext=use_auto_ext,
4131+
undetectable=undetectable,
4132+
uc_cdp_events=uc_cdp_events,
4133+
uc_subprocess=uc_subprocess,
4134+
log_cdp_events=log_cdp_events,
4135+
no_sandbox=no_sandbox,
4136+
disable_gpu=disable_gpu,
4137+
headless1=headless1,
4138+
headless2=True,
4139+
incognito=incognito,
4140+
guest_mode=guest_mode,
4141+
dark_mode=dark_mode,
4142+
devtools=devtools,
4143+
remote_debug=remote_debug,
4144+
enable_3d_apis=enable_3d_apis,
4145+
swiftshader=swiftshader,
4146+
ad_block_on=ad_block_on,
4147+
host_resolver_rules=host_resolver_rules,
4148+
block_images=block_images,
4149+
do_not_track=do_not_track,
4150+
chromium_arg=chromium_arg,
4151+
firefox_arg=firefox_arg,
4152+
firefox_pref=firefox_pref,
4153+
user_data_dir=user_data_dir,
4154+
extension_zip=extension_zip,
4155+
extension_dir=extension_dir,
4156+
disable_features=disable_features,
4157+
binary_location=binary_location,
4158+
driver_version=driver_version,
4159+
page_load_strategy=page_load_strategy,
4160+
use_wire=use_wire,
4161+
external_pdf=external_pdf,
4162+
test_id=test_id,
4163+
mobile_emulator=is_mobile,
4164+
device_width=d_width,
4165+
device_height=d_height,
4166+
device_pixel_ratio=d_p_r,
4167+
browser=browser_name,
4168+
)
4169+
time.sleep(0.555)
4170+
except Exception:
4171+
pass
4172+
finally:
4173+
with suppress(Exception):
4174+
decoy_driver.quit()
40934175
# Launch a web browser
40944176
new_driver = browser_launcher.get_driver(
40954177
browser_name=browser_name,
@@ -4435,7 +4517,12 @@ def load_cookies(self, name="cookies.txt"):
44354517
"""Loads the page cookies from the "saved_cookies" folder."""
44364518
cookies = self.get_saved_cookies(name)
44374519
self.wait_for_ready_state_complete()
4520+
origin = self.get_origin()
4521+
trim_origin = origin.split("://")[-1]
44384522
for cookie in cookies:
4523+
if "domain" in cookie:
4524+
if cookie["domain"] not in origin:
4525+
cookie["domain"] = trim_origin
44394526
if "expiry" in cookie:
44404527
del cookie["expiry"]
44414528
self.driver.add_cookie(cookie)
@@ -4656,30 +4743,6 @@ def activate_cdp_mode(self, url=None):
46564743
if hasattr(self.driver, "_is_using_uc") and self.driver._is_using_uc:
46574744
self.driver.uc_open_with_cdp_mode(url)
46584745
else:
4659-
# Fix Chrome-130 issues by creating a user-data-dir in advance
4660-
if (
4661-
(
4662-
not self.user_data_dir
4663-
or not os.path.exists(self.user_data_dir)
4664-
)
4665-
and self.browser == "chrome"
4666-
):
4667-
import tempfile
4668-
user_data_dir = os.path.normpath(tempfile.mkdtemp())
4669-
self.user_data_dir = user_data_dir
4670-
sb_config.user_data_dir = user_data_dir
4671-
try:
4672-
driver = self.get_new_driver(
4673-
user_data_dir=user_data_dir,
4674-
undetectable=True,
4675-
headless2=True,
4676-
)
4677-
time.sleep(0.555)
4678-
except Exception:
4679-
pass
4680-
finally:
4681-
with suppress(Exception):
4682-
driver.quit()
46834746
self.get_new_driver(undetectable=True)
46844747
self.driver.uc_open_with_cdp_mode(url)
46854748
self.cdp = self.driver.cdp
@@ -14941,31 +15004,6 @@ def setUp(self, masterqa_mode=False):
1494115004
self.__js_start_time = int(time.time() * 1000.0)
1494215005
else:
1494315006
# Launch WebDriver for both pytest and pynose
14944-
14945-
# Fix Chrome-130 issues by creating a user-data-dir in advance
14946-
if (
14947-
self.undetectable
14948-
and (
14949-
not self.user_data_dir
14950-
or not os.path.exists(self.user_data_dir)
14951-
)
14952-
and self.browser == "chrome"
14953-
):
14954-
import tempfile
14955-
user_data_dir = os.path.normpath(tempfile.mkdtemp())
14956-
self.user_data_dir = user_data_dir
14957-
sb_config.user_data_dir = user_data_dir
14958-
try:
14959-
driver = self.get_new_driver(
14960-
user_data_dir=user_data_dir,
14961-
headless2=True,
14962-
)
14963-
time.sleep(0.555)
14964-
except Exception:
14965-
pass
14966-
finally:
14967-
with suppress(Exception):
14968-
driver.quit()
1496915007
self.driver = self.get_new_driver(
1497015008
browser=self.browser,
1497115009
headless=self.headless,

seleniumbase/plugins/driver_manager.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -792,12 +792,21 @@ def Driver(
792792
from seleniumbase.core import browser_launcher
793793

794794
# Fix Chrome-130 issues by creating a user-data-dir in advance
795-
if undetectable and not user_data_dir and browser == "chrome":
795+
if (
796+
undetectable
797+
and (
798+
not user_data_dir
799+
or not os.path.exists(user_data_dir)
800+
or not any(os.scandir(user_data_dir))
801+
)
802+
and browser == "chrome"
803+
):
796804
import tempfile
797805
import time
798-
user_data_dir = (
799-
os.path.normpath(tempfile.mkdtemp())
800-
)
806+
if not user_data_dir:
807+
user_data_dir = (
808+
os.path.normpath(tempfile.mkdtemp())
809+
)
801810
try:
802811
decoy_driver = browser_launcher.get_driver(
803812
browser_name=browser_name,

seleniumbase/plugins/sb_manager.py

-24
Original file line numberDiff line numberDiff line change
@@ -1212,30 +1212,6 @@ def SB(
12121212
if not sb_config.multi_proxy:
12131213
proxy_helper.remove_proxy_zip_if_present()
12141214
start_time = time.time()
1215-
saved_headless2 = headless2
1216-
1217-
# Fix Chrome-130 issues by creating a user-data-dir in advance
1218-
if undetectable and not user_data_dir and browser == "chrome":
1219-
import tempfile
1220-
user_data_dir = (
1221-
os.path.normpath(tempfile.mkdtemp())
1222-
)
1223-
sb.user_data_dir = user_data_dir
1224-
sb_config.user_data_dir = user_data_dir
1225-
try:
1226-
decoy = sb
1227-
decoy.headless2 = True
1228-
decoy.setUp()
1229-
decoy.sleep(0.555)
1230-
except Exception:
1231-
pass
1232-
finally:
1233-
try:
1234-
decoy.tearDown()
1235-
except Exception:
1236-
pass
1237-
sb.headless2 = saved_headless2
1238-
12391215
sb.setUp()
12401216
test_passed = True # This can change later
12411217
teardown_exception = None

0 commit comments

Comments
 (0)