Skip to content

Commit cf060a2

Browse files
committed
Refactor browser_launcher.py
1 parent 4405f30 commit cf060a2

File tree

1 file changed

+26
-36
lines changed

1 file changed

+26
-36
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def make_driver_executable_if_not(driver_path):
107107
shared_utils.make_executable(driver_path)
108108

109109

110-
def extend_driver(driver):
110+
def extend_driver(driver, proxy_auth=False, use_uc=True):
111111
# Extend the driver with new methods
112112
driver.default_find_element = driver.find_element
113113
driver.default_find_elements = driver.find_elements
@@ -235,6 +235,8 @@ def extend_driver(driver):
235235
driver.reset_window_size = DM.reset_window_size
236236
if hasattr(driver, "proxy"):
237237
driver.set_wire_proxy = DM.set_wire_proxy
238+
if proxy_auth and not use_uc:
239+
time.sleep(0.11) # Proxy needs moment to load in Manifest V3
238240
return driver
239241

240242

@@ -3591,6 +3593,7 @@ def get_local_driver(
35913593
Can also be used to spin up additional browsers for the same test."""
35923594
downloads_path = DOWNLOADS_FOLDER
35933595
b_path = binary_location
3596+
use_uc = is_using_uc(undetectable, browser_name)
35943597
if use_wire:
35953598
pip_find_lock = fasteners.InterProcessLock(
35963599
constants.PipInstall.FINDLOCK
@@ -4064,7 +4067,7 @@ def get_local_driver(
40644067
edge_options.add_argument("--headless=old")
40654068
else:
40664069
edge_options.add_argument("--headless")
4067-
if mobile_emulator and not is_using_uc(undetectable, browser_name):
4070+
if mobile_emulator and not use_uc:
40684071
emulator_settings = {}
40694072
device_metrics = {}
40704073
if (
@@ -4128,7 +4131,7 @@ def get_local_driver(
41284131
settings.CHROME_START_HEIGHT,
41294132
)
41304133
)
4131-
if user_data_dir and not is_using_uc(undetectable, browser_name):
4134+
if user_data_dir and not use_uc:
41324135
abs_path = os.path.abspath(user_data_dir)
41334136
edge_options.add_argument("--user-data-dir=%s" % abs_path)
41344137
if extension_zip:
@@ -4163,7 +4166,7 @@ def get_local_driver(
41634166
edge_options.add_argument("--disable-prompt-on-repost")
41644167
if not enable_3d_apis:
41654168
edge_options.add_argument("--disable-3d-apis")
4166-
if headless or headless2 or is_using_uc(undetectable, browser_name):
4169+
if headless or headless2 or use_uc:
41674170
edge_options.add_argument("--disable-renderer-backgrounding")
41684171
edge_options.add_argument("--disable-backgrounding-occluded-windows")
41694172
edge_options.add_argument("--disable-client-side-phishing-detection")
@@ -4235,10 +4238,7 @@ def get_local_driver(
42354238
edge_options.add_argument("--allow-running-insecure-content")
42364239
if user_agent:
42374240
edge_options.add_argument("--user-agent=%s" % user_agent)
4238-
if (
4239-
IS_LINUX
4240-
or (IS_MAC and not is_using_uc(undetectable, browser_name))
4241-
):
4241+
if IS_LINUX or (IS_MAC and not use_uc):
42424242
edge_options.add_argument("--no-sandbox")
42434243
if remote_debug:
42444244
# To access the Debugger, go to: edge://inspect/#devices
@@ -4252,10 +4252,7 @@ def get_local_driver(
42524252
if swiftshader:
42534253
edge_options.add_argument("--use-gl=angle")
42544254
edge_options.add_argument("--use-angle=swiftshader-webgl")
4255-
elif (
4256-
not is_using_uc(undetectable, browser_name)
4257-
and not enable_3d_apis
4258-
):
4255+
elif not use_uc and not enable_3d_apis:
42594256
edge_options.add_argument("--disable-gpu")
42604257
if IS_LINUX:
42614258
edge_options.add_argument("--disable-dev-shm-usage")
@@ -4502,14 +4499,14 @@ def get_local_driver(
45024499
and len(saved_mcv.split(".")) == 4
45034500
):
45044501
driver_version = saved_mcv
4505-
if is_using_uc(undetectable, browser_name):
4502+
if use_uc:
45064503
use_br_version_for_uc = True
45074504
if (
45084505
(headless or headless2)
45094506
and IS_WINDOWS
45104507
and major_chrome_version
45114508
and int(major_chrome_version) >= 117
4512-
and not is_using_uc(undetectable, browser_name)
4509+
and not use_uc
45134510
and not (remote_debug or devtools or use_wire)
45144511
and not (proxy_string or multi_proxy or proxy_pac_url)
45154512
and (not chromium_arg or "debug" not in chromium_arg)
@@ -4565,7 +4562,7 @@ def get_local_driver(
45654562
use_version = ch_driver_version
45664563
disable_build_check = True
45674564
uc_driver_version = None
4568-
if is_using_uc(undetectable, browser_name):
4565+
if use_uc:
45694566
if use_br_version_for_uc or driver_version == "mlatest":
45704567
uc_driver_version = get_uc_driver_version(full=True)
45714568
full_ch_driver_version = uc_driver_version
@@ -4626,7 +4623,6 @@ def get_local_driver(
46264623
"\nWarning: Could not make chromedriver"
46274624
" executable: %s" % e
46284625
)
4629-
use_uc = is_using_uc(undetectable, browser_name)
46304626
make_uc_driver_from_chromedriver = False
46314627
local_ch_exists = (
46324628
LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER)
@@ -4843,7 +4839,7 @@ def get_local_driver(
48434839
service_args = []
48444840
if disable_build_check:
48454841
service_args = ["--disable-build-check"]
4846-
if is_using_uc(undetectable, browser_name):
4842+
if use_uc:
48474843
uc_lock = fasteners.InterProcessLock(
48484844
constants.MultiBrowser.DRIVER_FIXING_LOCK
48494845
)
@@ -4872,20 +4868,14 @@ def get_local_driver(
48724868
"\nWarning: Could not make uc_driver"
48734869
" executable: %s" % e
48744870
)
4875-
if (
4876-
not headless
4877-
or not IS_LINUX
4878-
or is_using_uc(undetectable, browser_name)
4879-
):
4871+
if not headless or not IS_LINUX or use_uc:
48804872
uc_activated = False
48814873
try:
4882-
if (
4883-
os.path.exists(LOCAL_CHROMEDRIVER)
4884-
or is_using_uc(undetectable, browser_name)
4885-
):
4874+
if os.path.exists(LOCAL_CHROMEDRIVER) or use_uc:
48864875
if headless and not IS_LINUX:
48874876
undetectable = False # No support for headless
4888-
if is_using_uc(undetectable, browser_name):
4877+
use_uc = is_using_uc(undetectable, browser_name)
4878+
if use_uc:
48894879
from seleniumbase import undetected
48904880
from urllib.error import URLError
48914881
if IS_LINUX:
@@ -5185,7 +5175,7 @@ def get_local_driver(
51855175
driver = webdriver.Chrome(
51865176
service=service, options=chrome_options
51875177
)
5188-
return extend_driver(driver)
5178+
return extend_driver(driver, proxy_auth, use_uc)
51895179
if not auto_upgrade_chromedriver:
51905180
raise # Not an obvious fix.
51915181
else:
@@ -5436,11 +5426,11 @@ def get_local_driver(
54365426
'Emulation.setDeviceMetricsOverride',
54375427
set_device_metrics_override
54385428
)
5439-
return extend_driver(driver)
5429+
return extend_driver(driver, proxy_auth, use_uc)
54405430
else: # Running headless on Linux (and not using --uc)
54415431
try:
54425432
driver = webdriver.Chrome(options=chrome_options)
5443-
return extend_driver(driver)
5433+
return extend_driver(driver, proxy_auth, use_uc)
54445434
except Exception as e:
54455435
if not hasattr(e, "msg"):
54465436
raise
@@ -5462,7 +5452,7 @@ def get_local_driver(
54625452
driver = webdriver.Chrome(
54635453
service=service, options=chrome_options
54645454
)
5465-
return extend_driver(driver)
5455+
return extend_driver(driver, proxy_auth, use_uc)
54665456
mcv = None # Major Chrome Version
54675457
if "Current browser version is " in e.msg:
54685458
line = e.msg.split("Current browser version is ")[1]
@@ -5505,7 +5495,7 @@ def get_local_driver(
55055495
service=service,
55065496
options=chrome_options,
55075497
)
5508-
return extend_driver(driver)
5498+
return extend_driver(driver, proxy_auth, use_uc)
55095499
# Use the virtual display on Linux during headless errors
55105500
logging.debug(
55115501
"\nWarning: Chrome failed to launch in"
@@ -5523,17 +5513,17 @@ def get_local_driver(
55235513
driver = webdriver.Chrome(
55245514
service=service, options=chrome_options
55255515
)
5526-
return extend_driver(driver)
5516+
return extend_driver(driver, proxy_auth, use_uc)
55275517
except Exception as original_exception:
5528-
if is_using_uc(undetectable, browser_name):
5518+
if use_uc:
55295519
raise
55305520
# Try again if Chrome didn't launch
55315521
with suppress(Exception):
55325522
service = ChromeService(service_args=["--disable-build-check"])
55335523
driver = webdriver.Chrome(
55345524
service=service, options=chrome_options
55355525
)
5536-
return extend_driver(driver)
5526+
return extend_driver(driver, proxy_auth, use_uc)
55375527
if user_data_dir:
55385528
print("\nUnable to set user_data_dir while starting Chrome!\n")
55395529
raise
@@ -5560,7 +5550,7 @@ def get_local_driver(
55605550
)
55615551
try:
55625552
driver = webdriver.Chrome(service=service)
5563-
return extend_driver(driver)
5553+
return extend_driver(driver, proxy_auth, use_uc)
55645554
except Exception:
55655555
raise original_exception
55665556
else:

0 commit comments

Comments
 (0)