@@ -108,7 +108,9 @@ def make_driver_executable_if_not(driver_path):
108
108
shared_utils .make_executable (driver_path )
109
109
110
110
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
+ ):
112
114
# Extend the driver with new methods
113
115
driver .default_find_element = driver .find_element
114
116
driver .default_find_elements = driver .find_elements
@@ -234,6 +236,14 @@ def extend_driver(driver, proxy_auth=False, use_uc=True):
234
236
driver .switch_to_tab = DM .switch_to_tab
235
237
driver .switch_to_frame = DM .switch_to_frame
236
238
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
+ )
237
247
if hasattr (driver , "proxy" ):
238
248
driver .set_wire_proxy = DM .set_wire_proxy
239
249
if proxy_auth :
@@ -2542,6 +2552,7 @@ def _set_chrome_options(
2542
2552
included_disabled_features .append ("PrivacySandboxSettings4" )
2543
2553
included_disabled_features .append ("SidePanelPinning" )
2544
2554
included_disabled_features .append ("UserAgentClientHint" )
2555
+ included_disabled_features .append ("DisableLoadExtensionCommandLineSwitch" )
2545
2556
for item in extra_disabled_features :
2546
2557
if item not in included_disabled_features :
2547
2558
included_disabled_features .append (item )
@@ -2819,6 +2830,8 @@ def get_driver(
2819
2830
if headless2 and browser_name == constants .Browser .FIREFOX :
2820
2831
headless2 = False # Only for Chromium
2821
2832
headless = True
2833
+ if binary_location and isinstance (binary_location , str ):
2834
+ binary_location = binary_location .strip ()
2822
2835
if (
2823
2836
is_using_uc (undetectable , browser_name )
2824
2837
and binary_location
@@ -3014,6 +3027,8 @@ def get_driver(
3014
3027
proxy_pass = None
3015
3028
proxy_scheme = "http"
3016
3029
if proxy_string :
3030
+ # (The code below was for the Chrome 137 extension fix)
3031
+ # sb_config._cdp_proxy = proxy_string
3017
3032
username_and_password = None
3018
3033
if "@" in proxy_string :
3019
3034
# Format => username:password@hostname:port
@@ -4450,6 +4465,9 @@ def get_local_driver(
4450
4465
included_disabled_features .append ("PrivacySandboxSettings4" )
4451
4466
included_disabled_features .append ("SidePanelPinning" )
4452
4467
included_disabled_features .append ("UserAgentClientHint" )
4468
+ included_disabled_features .append (
4469
+ "DisableLoadExtensionCommandLineSwitch"
4470
+ )
4453
4471
for item in extra_disabled_features :
4454
4472
if item not in included_disabled_features :
4455
4473
included_disabled_features .append (item )
@@ -5328,7 +5346,9 @@ def get_local_driver(
5328
5346
driver = webdriver .Chrome (
5329
5347
service = service , options = chrome_options
5330
5348
)
5331
- return extend_driver (driver , proxy_auth , use_uc )
5349
+ return extend_driver (
5350
+ driver , proxy_auth , use_uc , recorder_ext
5351
+ )
5332
5352
if not auto_upgrade_chromedriver :
5333
5353
raise # Not an obvious fix.
5334
5354
else :
@@ -5580,11 +5600,15 @@ def get_local_driver(
5580
5600
'Emulation.setDeviceMetricsOverride' ,
5581
5601
set_device_metrics_override
5582
5602
)
5583
- return extend_driver (driver , proxy_auth , use_uc )
5603
+ return extend_driver (
5604
+ driver , proxy_auth , use_uc , recorder_ext
5605
+ )
5584
5606
else : # Running headless on Linux (and not using --uc)
5585
5607
try :
5586
5608
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
+ )
5588
5612
except Exception as e :
5589
5613
if not hasattr (e , "msg" ):
5590
5614
raise
@@ -5606,7 +5630,9 @@ def get_local_driver(
5606
5630
driver = webdriver .Chrome (
5607
5631
service = service , options = chrome_options
5608
5632
)
5609
- return extend_driver (driver , proxy_auth , use_uc )
5633
+ return extend_driver (
5634
+ driver , proxy_auth , use_uc , recorder_ext
5635
+ )
5610
5636
mcv = None # Major Chrome Version
5611
5637
if "Current browser version is " in e .msg :
5612
5638
line = e .msg .split ("Current browser version is " )[1 ]
@@ -5649,7 +5675,9 @@ def get_local_driver(
5649
5675
service = service ,
5650
5676
options = chrome_options ,
5651
5677
)
5652
- return extend_driver (driver , proxy_auth , use_uc )
5678
+ return extend_driver (
5679
+ driver , proxy_auth , use_uc , recorder_ext
5680
+ )
5653
5681
# Use the virtual display on Linux during headless errors
5654
5682
logging .debug (
5655
5683
"\n Warning: Chrome failed to launch in"
@@ -5667,7 +5695,9 @@ def get_local_driver(
5667
5695
driver = webdriver .Chrome (
5668
5696
service = service , options = chrome_options
5669
5697
)
5670
- return extend_driver (driver , proxy_auth , use_uc )
5698
+ return extend_driver (
5699
+ driver , proxy_auth , use_uc , recorder_ext
5700
+ )
5671
5701
except Exception as original_exception :
5672
5702
if use_uc :
5673
5703
raise
@@ -5677,7 +5707,9 @@ def get_local_driver(
5677
5707
driver = webdriver .Chrome (
5678
5708
service = service , options = chrome_options
5679
5709
)
5680
- return extend_driver (driver , proxy_auth , use_uc )
5710
+ return extend_driver (
5711
+ driver , proxy_auth , use_uc , recorder_ext
5712
+ )
5681
5713
if user_data_dir :
5682
5714
print ("\n Unable to set user_data_dir while starting Chrome!\n " )
5683
5715
raise
@@ -5704,7 +5736,9 @@ def get_local_driver(
5704
5736
)
5705
5737
try :
5706
5738
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
+ )
5708
5742
except Exception :
5709
5743
raise original_exception
5710
5744
else :
0 commit comments