33
44Usage:
55 seleniumbase install {chromedriver|geckodriver|edgedriver|
6- iedriver|operadriver}
6+ iedriver|operadriver} [OPTIONS]
7+ Options:
8+ VERSION - Specify the version (For Chromedriver ONLY)
9+ (Default Chromedriver version = 2.44)
10+ Use "latest" to get the latest Chromedriver.
11+ Example:
12+ seleniumbase install chromedriver
13+ seleniumbase install chromedriver 76.0.3809.126
14+ seleniumbase install chromedriver latest
15+ seleniumbase install geckodriver
716Output:
817 Installs the specified webdriver.
918 (chromedriver is required for Chrome automation)
2433from seleniumbase import drivers # webdriver storage folder for SeleniumBase
2534urllib3 .disable_warnings ()
2635DRIVER_DIR = os .path .dirname (os .path .realpath (drivers .__file__ ))
36+ DEFAULT_CHROMEDRIVER_VERSION = "2.44"
2737
2838
2939def invalid_run_command ():
3040 exp = (" ** install **\n \n " )
3141 exp += " Usage:\n "
32- exp += " seleniumbase install [DRIVER_NAME]\n "
42+ exp += " seleniumbase install [DRIVER_NAME] [OPTIONS] \n "
3343 exp += " (Drivers: chromedriver, geckodriver, edgedriver,\n "
3444 exp += " iedriver, operadriver)\n "
45+ exp += " Options:\n "
46+ exp += " VERSION - Specify the version (For Chromedriver ONLY)."
47+ exp += " (Default Chromedriver version = 2.44)"
48+ exp += ' Use "latest" to get the latest Chromedriver.'
3549 exp += " Example:\n "
3650 exp += " seleniumbase install chromedriver\n "
51+ exp += " seleniumbase install chromedriver 76.0.3809.126\n "
52+ exp += " seleniumbase install chromedriver latest\n "
53+ exp += " seleniumbase install geckodriver\n "
3754 exp += " Output:\n "
3855 exp += " Installs the specified webdriver.\n "
3956 exp += " (chromedriver is required for Chrome automation)\n "
@@ -56,11 +73,11 @@ def main():
5673 num_args = len (sys .argv )
5774 if sys .argv [0 ].split ('/' )[- 1 ].lower () == "seleniumbase" or (
5875 sys .argv [0 ].split ('\\ ' )[- 1 ].lower () == "seleniumbase" ):
59- if num_args < 3 or num_args > 3 :
76+ if num_args < 3 or num_args > 4 :
6077 invalid_run_command ()
6178 else :
6279 invalid_run_command ()
63- name = sys .argv [num_args - 1 ].lower ()
80+ name = sys .argv [2 ].lower ()
6481
6582 file_name = None
6683 download_url = None
@@ -71,52 +88,56 @@ def main():
7188 inner_folder = None
7289
7390 if name == "chromedriver" :
74- latest_version = "2.44" # It's not the latest, but most compatible
91+ use_version = DEFAULT_CHROMEDRIVER_VERSION
92+ get_latest = False
93+ if num_args == 4 :
94+ use_version = sys .argv [3 ]
95+ if use_version .lower () == "latest" :
96+ get_latest = True
7597 if "darwin" in sys_plat :
7698 file_name = "chromedriver_mac64.zip"
7799 elif "linux" in sys_plat :
78- latest_version = "2.44" # Linux machines may need the old driver
79100 file_name = "chromedriver_linux64.zip"
80101 elif "win32" in sys_plat or "win64" in sys_plat or "x64" in sys_plat :
81102 file_name = "chromedriver_win32.zip" # Works for win32 / win_x64
82103 else :
83104 raise Exception ("Cannot determine which version of Chromedriver "
84105 "to download!" )
85- download_url = ("http://chromedriver.storage.googleapis.com/"
86- "%s/%s" % (latest_version , file_name ))
87- # Forcing Chromedriver v2.40 for now, even though it's not the latest.
88- get_latest = False
106+ found_chromedriver = False
89107 if get_latest :
90108 last = "http://chromedriver.storage.googleapis.com/LATEST_RELEASE"
91- print ('\n Locating the latest version of Chromedriver...' )
92- latest_version = requests .get (last ).text
93- if not requests .get (download_url ).ok :
94- fallback_version = "2.44"
95- download_url = ("http://chromedriver.storage.googleapis.com/"
96- "%s/%s" % (fallback_version , file_name ))
97- else :
98- download_url = ("http://chromedriver.storage.googleapis.com/"
99- "%s/%s" % (latest_version , file_name ))
100- print ("Found %s" % download_url )
109+ url_request = requests .get (last )
110+ if url_request .ok :
111+ found_chromedriver = True
112+ use_version = url_request .text
113+ download_url = ("http://chromedriver.storage.googleapis.com/"
114+ "%s/%s" % (use_version , file_name ))
115+ url_request = None
116+ if not found_chromedriver :
117+ url_request = requests .get (download_url )
118+ if found_chromedriver or url_request .ok :
119+ print ("\n Chromedriver version for download = %s" % use_version )
120+ else :
121+ raise Exception ("Could not find Chromedriver to download!\n " )
101122 elif name == "geckodriver" or name == "firefoxdriver" :
102- latest_version = "v0.24.0"
123+ use_version = "v0.24.0"
103124 if "darwin" in sys_plat :
104- file_name = "geckodriver-%s-macos.tar.gz" % latest_version
125+ file_name = "geckodriver-%s-macos.tar.gz" % use_version
105126 elif "linux" in sys_plat :
106127 arch = platform .architecture ()[0 ]
107128 if "64" in arch :
108- file_name = "geckodriver-%s-linux64.tar.gz" % latest_version
129+ file_name = "geckodriver-%s-linux64.tar.gz" % use_version
109130 else :
110- file_name = "geckodriver-%s-linux32.tar.gz" % latest_version
131+ file_name = "geckodriver-%s-linux32.tar.gz" % use_version
111132 elif "win32" in sys_plat or "win64" in sys_plat or "x64" in sys_plat :
112- file_name = "geckodriver-%s-win64.zip" % latest_version
133+ file_name = "geckodriver-%s-win64.zip" % use_version
113134 else :
114135 raise Exception ("Cannot determine which version of Geckodriver "
115136 "(Firefox Driver) to download!" )
116137
117138 download_url = ("https://github.com/mozilla/geckodriver/"
118139 "releases/download/"
119- "%s/%s" % (latest_version , file_name ))
140+ "%s/%s" % (use_version , file_name ))
120141 elif name == "edgedriver" or name == "microsoftwebdriver" :
121142 name = "edgedriver"
122143 version_code = "F/8/A/F8AF50AB-3C3A-4BC4-8773-DC27B32988DD"
@@ -141,7 +162,7 @@ def main():
141162 "%s/%s" % (major_version , file_name ))
142163 elif name == "operadriver" or name == "operachromiumdriver" :
143164 name = "operadriver"
144- latest_version = "v.2.40"
165+ use_version = "v.2.40"
145166 if "darwin" in sys_plat :
146167 file_name = "operadriver_mac64.zip"
147168 platform_code = "mac64"
@@ -176,7 +197,7 @@ def main():
176197
177198 download_url = ("https://github.com/operasoftware/operachromiumdriver/"
178199 "releases/download/"
179- "%s/%s" % (latest_version , file_name ))
200+ "%s/%s" % (use_version , file_name ))
180201 else :
181202 invalid_run_command ()
182203
0 commit comments