@@ -153,15 +153,25 @@ def get_uc_driver_version():
153
153
return uc_driver_version
154
154
155
155
156
- def find_chromedriver_version_to_use (use_version ):
157
- # Because https://chromedriver.chromium.org/downloads stops at 114
158
- final_chromedriver = "114"
156
+ def find_chromedriver_version_to_use (use_version , driver_version ):
157
+ # Note: https://chromedriver.chromium.org/downloads stops at 114.
158
+ # Future drivers are part of the Chrome-for-Testing collection.
159
159
if (
160
- use_version
161
- and use_version .isdigit ()
162
- and int (use_version ) > int ( final_chromedriver )
160
+ driver_version
161
+ and str ( driver_version ). split ( "." )[ 0 ] .isdigit ()
162
+ and int (str ( driver_version ). split ( "." )[ 0 ]) >= 72
163
163
):
164
- use_version = final_chromedriver
164
+ use_version = str (driver_version )
165
+ return use_version
166
+
167
+
168
+ def find_edgedriver_version_to_use (use_version , driver_version ):
169
+ if (
170
+ driver_version
171
+ and str (driver_version ).split ("." )[0 ].isdigit ()
172
+ and int (str (driver_version ).split ("." )[0 ]) >= 80
173
+ ):
174
+ use_version = str (driver_version )
165
175
return use_version
166
176
167
177
@@ -526,6 +536,7 @@ def _set_chrome_options(
526
536
extension_zip ,
527
537
extension_dir ,
528
538
binary_location ,
539
+ driver_version ,
529
540
page_load_strategy ,
530
541
use_wire ,
531
542
external_pdf ,
@@ -1088,6 +1099,7 @@ def get_driver(
1088
1099
extension_zip = None ,
1089
1100
extension_dir = None ,
1090
1101
binary_location = None ,
1102
+ driver_version = None ,
1091
1103
page_load_strategy = None ,
1092
1104
use_wire = False ,
1093
1105
external_pdf = False ,
@@ -1295,6 +1307,7 @@ def get_driver(
1295
1307
extension_zip ,
1296
1308
extension_dir ,
1297
1309
binary_location ,
1310
+ driver_version ,
1298
1311
page_load_strategy ,
1299
1312
use_wire ,
1300
1313
external_pdf ,
@@ -1347,6 +1360,7 @@ def get_driver(
1347
1360
extension_zip ,
1348
1361
extension_dir ,
1349
1362
binary_location ,
1363
+ driver_version ,
1350
1364
page_load_strategy ,
1351
1365
use_wire ,
1352
1366
external_pdf ,
@@ -1403,6 +1417,7 @@ def get_remote_driver(
1403
1417
extension_zip ,
1404
1418
extension_dir ,
1405
1419
binary_location ,
1420
+ driver_version ,
1406
1421
page_load_strategy ,
1407
1422
use_wire ,
1408
1423
external_pdf ,
@@ -1522,6 +1537,7 @@ def get_remote_driver(
1522
1537
extension_zip ,
1523
1538
extension_dir ,
1524
1539
binary_location ,
1540
+ driver_version ,
1525
1541
page_load_strategy ,
1526
1542
use_wire ,
1527
1543
external_pdf ,
@@ -1712,6 +1728,7 @@ def get_remote_driver(
1712
1728
extension_zip ,
1713
1729
extension_dir ,
1714
1730
binary_location ,
1731
+ driver_version ,
1715
1732
page_load_strategy ,
1716
1733
use_wire ,
1717
1734
external_pdf ,
@@ -1834,6 +1851,7 @@ def get_remote_driver(
1834
1851
extension_zip ,
1835
1852
extension_dir ,
1836
1853
binary_location ,
1854
+ driver_version ,
1837
1855
page_load_strategy ,
1838
1856
use_wire ,
1839
1857
external_pdf ,
@@ -1956,6 +1974,7 @@ def get_local_driver(
1956
1974
extension_zip ,
1957
1975
extension_dir ,
1958
1976
binary_location ,
1977
+ driver_version ,
1959
1978
page_load_strategy ,
1960
1979
use_wire ,
1961
1980
external_pdf ,
@@ -2229,7 +2248,10 @@ def get_local_driver(
2229
2248
major_edge_version = None
2230
2249
if major_edge_version :
2231
2250
use_version = major_edge_version
2232
- driver_version = None
2251
+ use_version = find_edgedriver_version_to_use (
2252
+ use_version , driver_version
2253
+ )
2254
+ edge_driver_version = None
2233
2255
edgedriver_upgrade_needed = False
2234
2256
if os .path .exists (LOCAL_EDGEDRIVER ):
2235
2257
try :
@@ -2254,16 +2276,16 @@ def get_local_driver(
2254
2276
else :
2255
2277
output = 0
2256
2278
if int (output ) >= 2 :
2257
- driver_version = output
2279
+ edge_driver_version = output
2258
2280
except Exception :
2259
2281
pass
2260
2282
local_edgedriver_exists = False
2261
2283
if LOCAL_EDGEDRIVER and os .path .exists (LOCAL_EDGEDRIVER ):
2262
2284
local_edgedriver_exists = True
2263
2285
if (
2264
2286
use_version != "latest"
2265
- and driver_version
2266
- and use_version != driver_version
2287
+ and edge_driver_version
2288
+ and use_version != edge_driver_version
2267
2289
):
2268
2290
edgedriver_upgrade_needed = True
2269
2291
else :
@@ -2761,6 +2783,7 @@ def get_local_driver(
2761
2783
extension_zip ,
2762
2784
extension_dir ,
2763
2785
binary_location ,
2786
+ driver_version ,
2764
2787
page_load_strategy ,
2765
2788
use_wire ,
2766
2789
external_pdf ,
@@ -2817,6 +2840,7 @@ def get_local_driver(
2817
2840
extension_zip ,
2818
2841
extension_dir ,
2819
2842
binary_location ,
2843
+ driver_version ,
2820
2844
page_load_strategy ,
2821
2845
use_wire ,
2822
2846
external_pdf ,
@@ -2860,7 +2884,7 @@ def get_local_driver(
2860
2884
major_chrome_version = None
2861
2885
if major_chrome_version :
2862
2886
use_version = major_chrome_version
2863
- driver_version = None
2887
+ ch_driver_version = None
2864
2888
path_chromedriver = chromedriver_on_path ()
2865
2889
if os .path .exists (LOCAL_CHROMEDRIVER ):
2866
2890
try :
@@ -2873,7 +2897,7 @@ def get_local_driver(
2873
2897
output = output .decode ("utf-8" )
2874
2898
output = output .split (" " )[1 ].split ("." )[0 ]
2875
2899
if int (output ) >= 2 :
2876
- driver_version = output
2900
+ ch_driver_version = output
2877
2901
except Exception :
2878
2902
pass
2879
2903
elif path_chromedriver :
@@ -2887,7 +2911,7 @@ def get_local_driver(
2887
2911
output = output .decode ("utf-8" )
2888
2912
output = output .split (" " )[1 ].split ("." )[0 ]
2889
2913
if int (output ) >= 2 :
2890
- driver_version = output
2914
+ ch_driver_version = output
2891
2915
except Exception :
2892
2916
pass
2893
2917
if headless2 :
@@ -2922,12 +2946,14 @@ def get_local_driver(
2922
2946
from seleniumbase import config as sb_config
2923
2947
2924
2948
sb_config .multi_proxy = True
2925
- use_version = find_chromedriver_version_to_use (use_version )
2949
+ use_version = find_chromedriver_version_to_use (
2950
+ use_version , driver_version
2951
+ )
2926
2952
if (
2927
2953
LOCAL_CHROMEDRIVER
2928
2954
and os .path .exists (LOCAL_CHROMEDRIVER )
2929
2955
and (
2930
- use_version == driver_version
2956
+ use_version == ch_driver_version
2931
2957
or use_version == "latest"
2932
2958
)
2933
2959
and (
@@ -2951,11 +2977,11 @@ def get_local_driver(
2951
2977
not path_chromedriver
2952
2978
or (
2953
2979
use_version != "latest"
2954
- and driver_version
2955
- and use_version != driver_version
2980
+ and ch_driver_version
2981
+ and use_version != ch_driver_version
2956
2982
and (
2957
2983
selenium4_or_newer
2958
- or driver_version != "72"
2984
+ or ch_driver_version != "72"
2959
2985
)
2960
2986
)
2961
2987
or (
@@ -3000,9 +3026,9 @@ def get_local_driver(
3000
3026
if (
3001
3027
not path_chromedriver
3002
3028
or (
3003
- driver_version
3029
+ ch_driver_version
3004
3030
and (
3005
- int (driver_version )
3031
+ int (ch_driver_version )
3006
3032
< int (d_latest_major )
3007
3033
)
3008
3034
)
@@ -3056,9 +3082,9 @@ def get_local_driver(
3056
3082
if (
3057
3083
not path_chromedriver
3058
3084
or (
3059
- driver_version
3085
+ ch_driver_version
3060
3086
and (
3061
- int (driver_version )
3087
+ int (ch_driver_version )
3062
3088
< int (d_latest_major )
3063
3089
)
3064
3090
)
@@ -3077,7 +3103,9 @@ def get_local_driver(
3077
3103
)
3078
3104
with uc_lock : # Avoid multithreaded issues
3079
3105
uc_driver_version = get_uc_driver_version ()
3080
- use_version = find_chromedriver_version_to_use (use_version )
3106
+ use_version = find_chromedriver_version_to_use (
3107
+ use_version , driver_version
3108
+ )
3081
3109
if (
3082
3110
(
3083
3111
uc_driver_version != use_version
@@ -3252,7 +3280,9 @@ def get_local_driver(
3252
3280
and int (major_chrome_version ) >= 86
3253
3281
):
3254
3282
mcv = major_chrome_version
3255
- mcv = find_chromedriver_version_to_use (mcv )
3283
+ mcv = find_chromedriver_version_to_use (
3284
+ mcv , driver_version
3285
+ )
3256
3286
headless = True
3257
3287
headless_options = _set_chrome_options (
3258
3288
browser_name ,
@@ -3294,6 +3324,7 @@ def get_local_driver(
3294
3324
extension_zip ,
3295
3325
extension_dir ,
3296
3326
binary_location ,
3327
+ driver_version ,
3297
3328
page_load_strategy ,
3298
3329
use_wire ,
3299
3330
external_pdf ,
0 commit comments