1616from selenium .webdriver .edge .service import Service as EdgeService
1717from selenium .webdriver .firefox .service import Service as FirefoxService
1818from selenium .webdriver .safari .service import Service as SafariService
19+ from seleniumbase import config as sb_config
1920from seleniumbase import decorators
2021from seleniumbase import drivers # webdriver storage folder for SeleniumBase
2122from seleniumbase import extensions # browser extensions storage folder
@@ -1564,11 +1565,9 @@ def get_remote_driver(
15641565 extra_caps = {}
15651566 if cap_file :
15661567 from seleniumbase .core import capabilities_parser
1567-
15681568 desired_caps = capabilities_parser .get_desired_capabilities (cap_file )
15691569 if cap_string :
15701570 import json
1571-
15721571 try :
15731572 extra_caps = json .loads (str (cap_string ))
15741573 except Exception as e :
@@ -2073,7 +2072,6 @@ def get_local_driver(
20732072 "IE Browser is for Windows-based systems only!"
20742073 )
20752074 from selenium .webdriver .ie .options import Options
2076-
20772075 ie_options = Options ()
20782076 ie_options .ignore_protected_mode_settings = True
20792077 ie_options .ignore_zoom_level = True
@@ -2726,8 +2724,6 @@ def get_local_driver(
27262724 if is_using_uc (undetectable , browser_name ):
27272725 uc_driver_version = get_uc_driver_version ()
27282726 if multi_proxy :
2729- from seleniumbase import config as sb_config
2730-
27312727 sb_config .multi_proxy = True
27322728 use_version = find_chromedriver_version_to_use (
27332729 use_version , driver_version
@@ -2983,7 +2979,6 @@ def get_local_driver(
29832979 if is_using_uc (undetectable , browser_name ):
29842980 from seleniumbase import undetected
29852981 from urllib .error import URLError
2986-
29872982 if IS_LINUX :
29882983 if "--headless" in (
29892984 chrome_options .arguments
@@ -3007,52 +3002,70 @@ def get_local_driver(
30073002 chrome_options .add_experimental_option (
30083003 "w3c" , True
30093004 )
3005+ if (
3006+ (not user_agent or "Headless" in user_agent )
3007+ and uc_chrome_version
3008+ and uc_chrome_version >= 117
3009+ and (headless or headless2 )
3010+ and hasattr (sb_config , "uc_agent_cache" )
3011+ ):
3012+ user_agent = sb_config .uc_agent_cache
3013+ chrome_options .add_argument (
3014+ "--user-agent=%s" % user_agent
3015+ )
30103016 try :
30113017 if (
3012- uc_chrome_version
3018+ (
3019+ not user_agent
3020+ or "Headless" in user_agent
3021+ )
3022+ and uc_chrome_version
30133023 and uc_chrome_version >= 117
30143024 and (headless or headless2 )
3015- and not user_agent
30163025 ):
3026+ from seleniumbase .console_scripts import (
3027+ sb_install
3028+ )
3029+ sb_config .uc_user_agent_cache = True
30173030 headless_options = _set_chrome_options (
30183031 browser_name ,
30193032 downloads_path ,
30203033 True , # headless
30213034 locale_code ,
3022- proxy_string ,
3023- proxy_auth ,
3024- proxy_user ,
3025- proxy_pass ,
3026- proxy_bypass_list ,
3027- proxy_pac_url ,
3028- multi_proxy ,
3029- user_agent ,
3030- recorder_ext ,
3035+ None , # proxy_string
3036+ None , # proxy_auth
3037+ None , # proxy_user
3038+ None , # proxy_pass
3039+ None , # proxy_bypass_list
3040+ None , # proxy_pac_url
3041+ None , # multi_proxy
3042+ None , # user_agent
3043+ None , # recorder_ext
30313044 disable_js ,
30323045 disable_csp ,
30333046 enable_ws ,
30343047 enable_sync ,
30353048 use_auto_ext ,
3036- False , # Undetectable
3037- uc_cdp_events ,
3038- uc_subprocess ,
3049+ False , # undetectable
3050+ False , # uc_cdp_events
3051+ False , # uc_subprocess
30393052 no_sandbox ,
30403053 disable_gpu ,
30413054 False , # headless2
30423055 incognito ,
30433056 guest_mode ,
30443057 dark_mode ,
3045- devtools ,
3058+ None , # devtools
30463059 remote_debug ,
30473060 enable_3d_apis ,
30483061 swiftshader ,
3049- ad_block_on ,
3062+ None , # ad_block_on
30503063 block_images ,
30513064 do_not_track ,
3052- chromium_arg ,
3053- user_data_dir ,
3054- extension_zip ,
3055- extension_dir ,
3065+ None , # chromium_arg
3066+ None , # user_data_dir
3067+ None , # extension_zip
3068+ None , # extension_dir
30563069 binary_location ,
30573070 driver_version ,
30583071 page_load_strategy ,
@@ -3064,7 +3077,17 @@ def get_local_driver(
30643077 device_height ,
30653078 device_pixel_ratio ,
30663079 )
3067- if not path_chromedriver :
3080+ if (
3081+ not path_chromedriver
3082+ or (
3083+ ch_driver_version
3084+ and use_version
3085+ and (
3086+ int (ch_driver_version )
3087+ < int (use_version )
3088+ )
3089+ )
3090+ ):
30683091 sb_install .main (
30693092 override = "chromedriver %s"
30703093 % use_version ,
@@ -3091,12 +3114,16 @@ def get_local_driver(
30913114 service = service ,
30923115 options = headless_options ,
30933116 )
3094- user_agent = driver .execute_script (
3095- "return navigator.userAgent;"
3096- ).replace ("Headless" , "" )
3097- chrome_options .add_argument (
3098- "--user-agent=%s" % user_agent
3099- )
3117+ try :
3118+ user_agent = driver .execute_script (
3119+ "return navigator.userAgent;"
3120+ ).replace ("Headless" , "" )
3121+ chrome_options .add_argument (
3122+ "--user-agent=%s" % user_agent
3123+ )
3124+ sb_config .uc_agent_cache = user_agent
3125+ except Exception :
3126+ pass
31003127 driver .quit ()
31013128 except Exception :
31023129 pass
@@ -3213,46 +3240,45 @@ def get_local_driver(
32133240 mcv = find_chromedriver_version_to_use (
32143241 mcv , driver_version
32153242 )
3216- headless = True
32173243 headless_options = _set_chrome_options (
32183244 browser_name ,
32193245 downloads_path ,
3220- headless ,
3246+ True , # headless
32213247 locale_code ,
3222- proxy_string ,
3223- proxy_auth ,
3224- proxy_user ,
3225- proxy_pass ,
3226- proxy_bypass_list ,
3227- proxy_pac_url ,
3228- multi_proxy ,
3229- user_agent ,
3230- recorder_ext ,
3248+ None , # proxy_string
3249+ None , # proxy_auth
3250+ None , # proxy_user
3251+ None , # proxy_pass
3252+ None , # proxy_bypass_list
3253+ None , # proxy_pac_url
3254+ None , # multi_proxy
3255+ None , # user_agent
3256+ None , # recorder_ext
32313257 disable_js ,
32323258 disable_csp ,
32333259 enable_ws ,
32343260 enable_sync ,
32353261 use_auto_ext ,
3236- undetectable ,
3237- uc_cdp_events ,
3238- uc_subprocess ,
3262+ False , # undetectable
3263+ False , # uc_cdp_events
3264+ False , # uc_subprocess
32393265 no_sandbox ,
32403266 disable_gpu ,
3241- headless2 ,
3267+ False , # headless2
32423268 incognito ,
32433269 guest_mode ,
32443270 dark_mode ,
3245- devtools ,
3271+ None , # devtools
32463272 remote_debug ,
32473273 enable_3d_apis ,
32483274 swiftshader ,
3249- ad_block_on ,
3275+ None , # ad_block_on
32503276 block_images ,
32513277 do_not_track ,
3252- chromium_arg ,
3253- user_data_dir ,
3254- extension_zip ,
3255- extension_dir ,
3278+ None , # chromium_arg
3279+ None , # user_data_dir
3280+ None , # extension_zip
3281+ None , # extension_dir
32563282 binary_location ,
32573283 driver_version ,
32583284 page_load_strategy ,
0 commit comments