@@ -107,7 +107,7 @@ def make_driver_executable_if_not(driver_path):
107
107
shared_utils .make_executable (driver_path )
108
108
109
109
110
- def extend_driver (driver ):
110
+ def extend_driver (driver , proxy_auth = False , use_uc = True ):
111
111
# Extend the driver with new methods
112
112
driver .default_find_element = driver .find_element
113
113
driver .default_find_elements = driver .find_elements
@@ -235,6 +235,8 @@ def extend_driver(driver):
235
235
driver .reset_window_size = DM .reset_window_size
236
236
if hasattr (driver , "proxy" ):
237
237
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
238
240
return driver
239
241
240
242
@@ -3591,6 +3593,7 @@ def get_local_driver(
3591
3593
Can also be used to spin up additional browsers for the same test."""
3592
3594
downloads_path = DOWNLOADS_FOLDER
3593
3595
b_path = binary_location
3596
+ use_uc = is_using_uc (undetectable , browser_name )
3594
3597
if use_wire :
3595
3598
pip_find_lock = fasteners .InterProcessLock (
3596
3599
constants .PipInstall .FINDLOCK
@@ -4064,7 +4067,7 @@ def get_local_driver(
4064
4067
edge_options .add_argument ("--headless=old" )
4065
4068
else :
4066
4069
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 :
4068
4071
emulator_settings = {}
4069
4072
device_metrics = {}
4070
4073
if (
@@ -4128,7 +4131,7 @@ def get_local_driver(
4128
4131
settings .CHROME_START_HEIGHT ,
4129
4132
)
4130
4133
)
4131
- if user_data_dir and not is_using_uc ( undetectable , browser_name ) :
4134
+ if user_data_dir and not use_uc :
4132
4135
abs_path = os .path .abspath (user_data_dir )
4133
4136
edge_options .add_argument ("--user-data-dir=%s" % abs_path )
4134
4137
if extension_zip :
@@ -4163,7 +4166,7 @@ def get_local_driver(
4163
4166
edge_options .add_argument ("--disable-prompt-on-repost" )
4164
4167
if not enable_3d_apis :
4165
4168
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 :
4167
4170
edge_options .add_argument ("--disable-renderer-backgrounding" )
4168
4171
edge_options .add_argument ("--disable-backgrounding-occluded-windows" )
4169
4172
edge_options .add_argument ("--disable-client-side-phishing-detection" )
@@ -4235,10 +4238,7 @@ def get_local_driver(
4235
4238
edge_options .add_argument ("--allow-running-insecure-content" )
4236
4239
if user_agent :
4237
4240
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 ):
4242
4242
edge_options .add_argument ("--no-sandbox" )
4243
4243
if remote_debug :
4244
4244
# To access the Debugger, go to: edge://inspect/#devices
@@ -4252,10 +4252,7 @@ def get_local_driver(
4252
4252
if swiftshader :
4253
4253
edge_options .add_argument ("--use-gl=angle" )
4254
4254
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 :
4259
4256
edge_options .add_argument ("--disable-gpu" )
4260
4257
if IS_LINUX :
4261
4258
edge_options .add_argument ("--disable-dev-shm-usage" )
@@ -4502,14 +4499,14 @@ def get_local_driver(
4502
4499
and len (saved_mcv .split ("." )) == 4
4503
4500
):
4504
4501
driver_version = saved_mcv
4505
- if is_using_uc ( undetectable , browser_name ) :
4502
+ if use_uc :
4506
4503
use_br_version_for_uc = True
4507
4504
if (
4508
4505
(headless or headless2 )
4509
4506
and IS_WINDOWS
4510
4507
and major_chrome_version
4511
4508
and int (major_chrome_version ) >= 117
4512
- and not is_using_uc ( undetectable , browser_name )
4509
+ and not use_uc
4513
4510
and not (remote_debug or devtools or use_wire )
4514
4511
and not (proxy_string or multi_proxy or proxy_pac_url )
4515
4512
and (not chromium_arg or "debug" not in chromium_arg )
@@ -4565,7 +4562,7 @@ def get_local_driver(
4565
4562
use_version = ch_driver_version
4566
4563
disable_build_check = True
4567
4564
uc_driver_version = None
4568
- if is_using_uc ( undetectable , browser_name ) :
4565
+ if use_uc :
4569
4566
if use_br_version_for_uc or driver_version == "mlatest" :
4570
4567
uc_driver_version = get_uc_driver_version (full = True )
4571
4568
full_ch_driver_version = uc_driver_version
@@ -4626,7 +4623,6 @@ def get_local_driver(
4626
4623
"\n Warning: Could not make chromedriver"
4627
4624
" executable: %s" % e
4628
4625
)
4629
- use_uc = is_using_uc (undetectable , browser_name )
4630
4626
make_uc_driver_from_chromedriver = False
4631
4627
local_ch_exists = (
4632
4628
LOCAL_CHROMEDRIVER and os .path .exists (LOCAL_CHROMEDRIVER )
@@ -4843,7 +4839,7 @@ def get_local_driver(
4843
4839
service_args = []
4844
4840
if disable_build_check :
4845
4841
service_args = ["--disable-build-check" ]
4846
- if is_using_uc ( undetectable , browser_name ) :
4842
+ if use_uc :
4847
4843
uc_lock = fasteners .InterProcessLock (
4848
4844
constants .MultiBrowser .DRIVER_FIXING_LOCK
4849
4845
)
@@ -4872,20 +4868,14 @@ def get_local_driver(
4872
4868
"\n Warning: Could not make uc_driver"
4873
4869
" executable: %s" % e
4874
4870
)
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 :
4880
4872
uc_activated = False
4881
4873
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 :
4886
4875
if headless and not IS_LINUX :
4887
4876
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 :
4889
4879
from seleniumbase import undetected
4890
4880
from urllib .error import URLError
4891
4881
if IS_LINUX :
@@ -5185,7 +5175,7 @@ def get_local_driver(
5185
5175
driver = webdriver .Chrome (
5186
5176
service = service , options = chrome_options
5187
5177
)
5188
- return extend_driver (driver )
5178
+ return extend_driver (driver , proxy_auth , use_uc )
5189
5179
if not auto_upgrade_chromedriver :
5190
5180
raise # Not an obvious fix.
5191
5181
else :
@@ -5436,11 +5426,11 @@ def get_local_driver(
5436
5426
'Emulation.setDeviceMetricsOverride' ,
5437
5427
set_device_metrics_override
5438
5428
)
5439
- return extend_driver (driver )
5429
+ return extend_driver (driver , proxy_auth , use_uc )
5440
5430
else : # Running headless on Linux (and not using --uc)
5441
5431
try :
5442
5432
driver = webdriver .Chrome (options = chrome_options )
5443
- return extend_driver (driver )
5433
+ return extend_driver (driver , proxy_auth , use_uc )
5444
5434
except Exception as e :
5445
5435
if not hasattr (e , "msg" ):
5446
5436
raise
@@ -5462,7 +5452,7 @@ def get_local_driver(
5462
5452
driver = webdriver .Chrome (
5463
5453
service = service , options = chrome_options
5464
5454
)
5465
- return extend_driver (driver )
5455
+ return extend_driver (driver , proxy_auth , use_uc )
5466
5456
mcv = None # Major Chrome Version
5467
5457
if "Current browser version is " in e .msg :
5468
5458
line = e .msg .split ("Current browser version is " )[1 ]
@@ -5505,7 +5495,7 @@ def get_local_driver(
5505
5495
service = service ,
5506
5496
options = chrome_options ,
5507
5497
)
5508
- return extend_driver (driver )
5498
+ return extend_driver (driver , proxy_auth , use_uc )
5509
5499
# Use the virtual display on Linux during headless errors
5510
5500
logging .debug (
5511
5501
"\n Warning: Chrome failed to launch in"
@@ -5523,17 +5513,17 @@ def get_local_driver(
5523
5513
driver = webdriver .Chrome (
5524
5514
service = service , options = chrome_options
5525
5515
)
5526
- return extend_driver (driver )
5516
+ return extend_driver (driver , proxy_auth , use_uc )
5527
5517
except Exception as original_exception :
5528
- if is_using_uc ( undetectable , browser_name ) :
5518
+ if use_uc :
5529
5519
raise
5530
5520
# Try again if Chrome didn't launch
5531
5521
with suppress (Exception ):
5532
5522
service = ChromeService (service_args = ["--disable-build-check" ])
5533
5523
driver = webdriver .Chrome (
5534
5524
service = service , options = chrome_options
5535
5525
)
5536
- return extend_driver (driver )
5526
+ return extend_driver (driver , proxy_auth , use_uc )
5537
5527
if user_data_dir :
5538
5528
print ("\n Unable to set user_data_dir while starting Chrome!\n " )
5539
5529
raise
@@ -5560,7 +5550,7 @@ def get_local_driver(
5560
5550
)
5561
5551
try :
5562
5552
driver = webdriver .Chrome (service = service )
5563
- return extend_driver (driver )
5553
+ return extend_driver (driver , proxy_auth , use_uc )
5564
5554
except Exception :
5565
5555
raise original_exception
5566
5556
else :
0 commit comments