@@ -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 "\n Warning: 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 "\n Warning: 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 "\n Warning: 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 ("\n Unable 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