@@ -108,7 +108,9 @@ def make_driver_executable_if_not(driver_path):
108108 shared_utils .make_executable (driver_path )
109109
110110
111- def extend_driver (driver , proxy_auth = False , use_uc = True ):
111+ def extend_driver (
112+ driver , proxy_auth = False , use_uc = True , recorder_ext = False
113+ ):
112114 # Extend the driver with new methods
113115 driver .default_find_element = driver .find_element
114116 driver .default_find_elements = driver .find_elements
@@ -234,6 +236,14 @@ def extend_driver(driver, proxy_auth=False, use_uc=True):
234236 driver .switch_to_tab = DM .switch_to_tab
235237 driver .switch_to_frame = DM .switch_to_frame
236238 driver .reset_window_size = DM .reset_window_size
239+ if recorder_ext :
240+ from seleniumbase .js_code .recorder_js import recorder_js
241+ recorder_code = (
242+ """window.onload = function() { %s };""" % recorder_js
243+ )
244+ driver .execute_cdp_cmd (
245+ "Page.addScriptToEvaluateOnNewDocument" , {"source" : recorder_code }
246+ )
237247 if hasattr (driver , "proxy" ):
238248 driver .set_wire_proxy = DM .set_wire_proxy
239249 if proxy_auth :
@@ -2542,6 +2552,7 @@ def _set_chrome_options(
25422552 included_disabled_features .append ("PrivacySandboxSettings4" )
25432553 included_disabled_features .append ("SidePanelPinning" )
25442554 included_disabled_features .append ("UserAgentClientHint" )
2555+ included_disabled_features .append ("DisableLoadExtensionCommandLineSwitch" )
25452556 for item in extra_disabled_features :
25462557 if item not in included_disabled_features :
25472558 included_disabled_features .append (item )
@@ -2819,6 +2830,8 @@ def get_driver(
28192830 if headless2 and browser_name == constants .Browser .FIREFOX :
28202831 headless2 = False # Only for Chromium
28212832 headless = True
2833+ if binary_location and isinstance (binary_location , str ):
2834+ binary_location = binary_location .strip ()
28222835 if (
28232836 is_using_uc (undetectable , browser_name )
28242837 and binary_location
@@ -3014,6 +3027,8 @@ def get_driver(
30143027 proxy_pass = None
30153028 proxy_scheme = "http"
30163029 if proxy_string :
3030+ # (The code below was for the Chrome 137 extension fix)
3031+ # sb_config._cdp_proxy = proxy_string
30173032 username_and_password = None
30183033 if "@" in proxy_string :
30193034 # Format => username:password@hostname:port
@@ -4450,6 +4465,9 @@ def get_local_driver(
44504465 included_disabled_features .append ("PrivacySandboxSettings4" )
44514466 included_disabled_features .append ("SidePanelPinning" )
44524467 included_disabled_features .append ("UserAgentClientHint" )
4468+ included_disabled_features .append (
4469+ "DisableLoadExtensionCommandLineSwitch"
4470+ )
44534471 for item in extra_disabled_features :
44544472 if item not in included_disabled_features :
44554473 included_disabled_features .append (item )
@@ -5328,7 +5346,9 @@ def get_local_driver(
53285346 driver = webdriver .Chrome (
53295347 service = service , options = chrome_options
53305348 )
5331- return extend_driver (driver , proxy_auth , use_uc )
5349+ return extend_driver (
5350+ driver , proxy_auth , use_uc , recorder_ext
5351+ )
53325352 if not auto_upgrade_chromedriver :
53335353 raise # Not an obvious fix.
53345354 else :
@@ -5580,11 +5600,15 @@ def get_local_driver(
55805600 'Emulation.setDeviceMetricsOverride' ,
55815601 set_device_metrics_override
55825602 )
5583- return extend_driver (driver , proxy_auth , use_uc )
5603+ return extend_driver (
5604+ driver , proxy_auth , use_uc , recorder_ext
5605+ )
55845606 else : # Running headless on Linux (and not using --uc)
55855607 try :
55865608 driver = webdriver .Chrome (options = chrome_options )
5587- return extend_driver (driver , proxy_auth , use_uc )
5609+ return extend_driver (
5610+ driver , proxy_auth , use_uc , recorder_ext
5611+ )
55885612 except Exception as e :
55895613 if not hasattr (e , "msg" ):
55905614 raise
@@ -5606,7 +5630,9 @@ def get_local_driver(
56065630 driver = webdriver .Chrome (
56075631 service = service , options = chrome_options
56085632 )
5609- return extend_driver (driver , proxy_auth , use_uc )
5633+ return extend_driver (
5634+ driver , proxy_auth , use_uc , recorder_ext
5635+ )
56105636 mcv = None # Major Chrome Version
56115637 if "Current browser version is " in e .msg :
56125638 line = e .msg .split ("Current browser version is " )[1 ]
@@ -5649,7 +5675,9 @@ def get_local_driver(
56495675 service = service ,
56505676 options = chrome_options ,
56515677 )
5652- return extend_driver (driver , proxy_auth , use_uc )
5678+ return extend_driver (
5679+ driver , proxy_auth , use_uc , recorder_ext
5680+ )
56535681 # Use the virtual display on Linux during headless errors
56545682 logging .debug (
56555683 "\n Warning: Chrome failed to launch in"
@@ -5667,7 +5695,9 @@ def get_local_driver(
56675695 driver = webdriver .Chrome (
56685696 service = service , options = chrome_options
56695697 )
5670- return extend_driver (driver , proxy_auth , use_uc )
5698+ return extend_driver (
5699+ driver , proxy_auth , use_uc , recorder_ext
5700+ )
56715701 except Exception as original_exception :
56725702 if use_uc :
56735703 raise
@@ -5677,7 +5707,9 @@ def get_local_driver(
56775707 driver = webdriver .Chrome (
56785708 service = service , options = chrome_options
56795709 )
5680- return extend_driver (driver , proxy_auth , use_uc )
5710+ return extend_driver (
5711+ driver , proxy_auth , use_uc , recorder_ext
5712+ )
56815713 if user_data_dir :
56825714 print ("\n Unable to set user_data_dir while starting Chrome!\n " )
56835715 raise
@@ -5704,7 +5736,9 @@ def get_local_driver(
57045736 )
57055737 try :
57065738 driver = webdriver .Chrome (service = service )
5707- return extend_driver (driver , proxy_auth , use_uc )
5739+ return extend_driver (
5740+ driver , proxy_auth , use_uc , recorder_ext
5741+ )
57085742 except Exception :
57095743 raise original_exception
57105744 else :
0 commit comments