Skip to content

Commit fa6e180

Browse files
committed
Refactor the driver manager
1 parent 82e3797 commit fa6e180

File tree

3 files changed

+40
-32
lines changed

3 files changed

+40
-32
lines changed

seleniumbase/console_scripts/ReadMe.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,16 @@ sbase install [DRIVER] [OPTIONS]
6262
sbase get chromedriver
6363
sbase get geckodriver
6464
sbase get edgedriver
65-
sbase get chromedriver 107
66-
sbase get chromedriver 107.0.5304.62
65+
sbase get chromedriver 108
66+
sbase get chromedriver 108.0.5359.71
6767
sbase get chromedriver latest
6868
sbase get chromedriver latest-1 # (Latest minus one)
6969
sbase get chromedriver -p
7070
sbase get chromedriver latest -p
7171
```
7272

7373
(Drivers: ``chromedriver``, ``geckodriver``, ``edgedriver``,
74-
``iedriver``, ``operadriver``)
74+
``iedriver``, ``operadriver``, ``uc_driver``)
7575

7676
(Options: ``latest`` or a specific driver version.
7777
For chromedriver, you can also specify the major

seleniumbase/console_scripts/run.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def show_install_usage():
129129
print(" OR: sbase install [DRIVER_NAME] [OPTIONS]")
130130
print(" OR: sbase get [DRIVER_NAME] [OPTIONS]")
131131
print(" (Drivers: chromedriver, geckodriver, edgedriver")
132-
print(" iedriver, operadriver)")
132+
print(" iedriver, operadriver, uc_driver)")
133133
print(" Options:")
134134
print(" VERSION Specify the version to download.")
135135
print(" Tries to detect the needed version.")
@@ -143,8 +143,8 @@ def show_install_usage():
143143
print(" sbase get chromedriver")
144144
print(" sbase get geckodriver")
145145
print(" sbase get edgedriver")
146-
print(" sbase get chromedriver 107")
147-
print(" sbase get chromedriver 107.0.5304.62")
146+
print(" sbase get chromedriver 108")
147+
print(" sbase get chromedriver 108.0.5359.71")
148148
print(" sbase get chromedriver latest")
149149
print(" sbase get chromedriver latest-1")
150150
print(" sbase get chromedriver -p")

seleniumbase/console_scripts/sb_install.py

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
sbase get chromedriver
1515
sbase get geckodriver
1616
sbase get edgedriver
17-
sbase get chromedriver 107
18-
sbase get chromedriver 107.0.5304.62
17+
sbase get chromedriver 108
18+
sbase get chromedriver 108.0.5359.71
1919
sbase get chromedriver latest
2020
sbase get chromedriver latest-1 # (Latest minus one)
2121
sbase get chromedriver -p
@@ -42,11 +42,20 @@
4242
selenium4_or_newer = False
4343
if sys.version_info[0] == 3 and sys.version_info[1] >= 7:
4444
selenium4_or_newer = True
45+
IS_ARM_MAC = False
46+
if (
47+
sys.platform.endswith("darwin")
48+
and (
49+
"arm" in platform.processor().lower()
50+
or "arm64" in platform.version().lower()
51+
)
52+
):
53+
IS_ARM_MAC = True
4554
DRIVER_DIR = os.path.dirname(os.path.realpath(drivers.__file__))
4655
LOCAL_PATH = "/usr/local/bin/" # On Mac and Linux systems
4756
DEFAULT_CHROMEDRIVER_VERSION = "72.0.3626.69" # (If can't find LATEST_STABLE)
4857
DEFAULT_GECKODRIVER_VERSION = "v0.32.0"
49-
DEFAULT_EDGEDRIVER_VERSION = "106.0.1370.42" # (If can't find LATEST_STABLE)
58+
DEFAULT_EDGEDRIVER_VERSION = "108.0.1462.54" # (If can't find LATEST_STABLE)
5059
DEFAULT_OPERADRIVER_VERSION = "v.96.0.4664.45"
5160

5261

@@ -58,7 +67,7 @@ def invalid_run_command():
5867
exp += " OR seleniumbase get [DRIVER] [OPTIONS]\n"
5968
exp += " OR sbase get [DRIVER] [OPTIONS]\n"
6069
exp += " (Drivers: chromedriver, geckodriver, edgedriver,\n"
61-
exp += " iedriver, operadriver)\n"
70+
exp += " iedriver, operadriver, uc_driver)\n"
6271
exp += " Options:\n"
6372
exp += " VERSION Specify the version.\n"
6473
exp += " Tries to detect the needed version.\n"
@@ -71,8 +80,8 @@ def invalid_run_command():
7180
exp += " sbase get chromedriver\n"
7281
exp += " sbase get geckodriver\n"
7382
exp += " sbase get edgedriver\n"
74-
exp += " sbase get chromedriver 107\n"
75-
exp += " sbase get chromedriver 107.0.5304.62\n"
83+
exp += " sbase get chromedriver 108\n"
84+
exp += " sbase get chromedriver 108.0.5359.71\n"
7685
exp += " sbase get chromedriver latest\n"
7786
exp += " sbase get chromedriver latest-1\n"
7887
exp += " sbase get chromedriver -p\n"
@@ -179,7 +188,9 @@ def main(override=None, intel_for_uc=None):
179188
c3 = ""
180189
cr = ""
181190

182-
if name == "chromedriver":
191+
if name == "chromedriver" or name == "uc_driver":
192+
if name == "uc_driver" and IS_ARM_MAC:
193+
intel_for_uc = True # uc_driver is generated from chromedriver
183194
last = "https://chromedriver.storage.googleapis.com/LATEST_RELEASE"
184195
use_version = DEFAULT_CHROMEDRIVER_VERSION
185196

@@ -229,10 +240,7 @@ def main(override=None, intel_for_uc=None):
229240
invalid_run_command()
230241
if "darwin" in sys_plat:
231242
if (
232-
(
233-
"arm" in platform.processor().lower()
234-
or "arm64" in platform.version().lower()
235-
)
243+
IS_ARM_MAC
236244
and not intel_for_uc
237245
and int(use_version.split(".")[0]) > 105
238246
):
@@ -402,13 +410,7 @@ def main(override=None, intel_for_uc=None):
402410
file_name = "edgedriver_win32.zip"
403411
suffix = "WINDOWS"
404412
elif "darwin" in sys_plat:
405-
if (
406-
(
407-
"arm" in platform.processor().lower()
408-
or "arm64" in platform.version().lower()
409-
)
410-
and int(use_version.split(".")[0]) > 104
411-
):
413+
if IS_ARM_MAC and int(use_version.split(".")[0]) > 104:
412414
file_name = "edgedriver_mac64_m1.zip"
413415
else:
414416
file_name = "edgedriver_mac64.zip"
@@ -645,18 +647,19 @@ def main(override=None, intel_for_uc=None):
645647
for f_name in contents:
646648
# Remove existing version if exists
647649
new_file = os.path.join(downloads_folder, str(f_name))
650+
if (
651+
intel_for_uc
652+
and "darwin" in sys_plat
653+
and new_file.endswith("drivers/chromedriver")
654+
):
655+
new_file = new_file.replace(
656+
"drivers/chromedriver", "drivers/uc_driver"
657+
)
648658
if "Driver" in new_file or "driver" in new_file:
649659
if os.path.exists(new_file):
650660
os.remove(new_file) # Technically the old file now
651661
print("Extracting %s from %s ..." % (contents, file_name))
652-
if (
653-
intel_for_uc
654-
and "darwin" in sys_plat
655-
and (
656-
"arm" in platform.processor().lower()
657-
or "arm64" in platform.version().lower()
658-
)
659-
):
662+
if intel_for_uc and IS_ARM_MAC:
660663
f_name = "uc_driver"
661664
new_file = os.path.join(downloads_folder, f_name)
662665
if os.path.exists(new_file):
@@ -873,6 +876,11 @@ def main(override=None, intel_for_uc=None):
873876
make_executable(file_path)
874877
print("%s[%s] is now ready for use!%s" % (c1, file_name, cr))
875878
print("Location of [%s]:\n%s\n" % (file_name, file_path))
879+
if name == "uc_driver" and not IS_ARM_MAC:
880+
print(
881+
"%s[uc_driver] will be created from [chromedriver] at runtime!%s\n"
882+
% (c5, cr)
883+
)
876884

877885

878886
if __name__ == "__main__":

0 commit comments

Comments
 (0)