3
3
4
4
Usage:
5
5
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
7
16
Output:
8
17
Installs the specified webdriver.
9
18
(chromedriver is required for Chrome automation)
24
33
from seleniumbase import drivers # webdriver storage folder for SeleniumBase
25
34
urllib3 .disable_warnings ()
26
35
DRIVER_DIR = os .path .dirname (os .path .realpath (drivers .__file__ ))
36
+ DEFAULT_CHROMEDRIVER_VERSION = "2.44"
27
37
28
38
29
39
def invalid_run_command ():
30
40
exp = (" ** install **\n \n " )
31
41
exp += " Usage:\n "
32
- exp += " seleniumbase install [DRIVER_NAME]\n "
42
+ exp += " seleniumbase install [DRIVER_NAME] [OPTIONS] \n "
33
43
exp += " (Drivers: chromedriver, geckodriver, edgedriver,\n "
34
44
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.'
35
49
exp += " Example:\n "
36
50
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 "
37
54
exp += " Output:\n "
38
55
exp += " Installs the specified webdriver.\n "
39
56
exp += " (chromedriver is required for Chrome automation)\n "
@@ -56,11 +73,11 @@ def main():
56
73
num_args = len (sys .argv )
57
74
if sys .argv [0 ].split ('/' )[- 1 ].lower () == "seleniumbase" or (
58
75
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 :
60
77
invalid_run_command ()
61
78
else :
62
79
invalid_run_command ()
63
- name = sys .argv [num_args - 1 ].lower ()
80
+ name = sys .argv [2 ].lower ()
64
81
65
82
file_name = None
66
83
download_url = None
@@ -71,52 +88,56 @@ def main():
71
88
inner_folder = None
72
89
73
90
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
75
97
if "darwin" in sys_plat :
76
98
file_name = "chromedriver_mac64.zip"
77
99
elif "linux" in sys_plat :
78
- latest_version = "2.44" # Linux machines may need the old driver
79
100
file_name = "chromedriver_linux64.zip"
80
101
elif "win32" in sys_plat or "win64" in sys_plat or "x64" in sys_plat :
81
102
file_name = "chromedriver_win32.zip" # Works for win32 / win_x64
82
103
else :
83
104
raise Exception ("Cannot determine which version of Chromedriver "
84
105
"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
89
107
if get_latest :
90
108
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 " )
101
122
elif name == "geckodriver" or name == "firefoxdriver" :
102
- latest_version = "v0.24.0"
123
+ use_version = "v0.24.0"
103
124
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
105
126
elif "linux" in sys_plat :
106
127
arch = platform .architecture ()[0 ]
107
128
if "64" in arch :
108
- file_name = "geckodriver-%s-linux64.tar.gz" % latest_version
129
+ file_name = "geckodriver-%s-linux64.tar.gz" % use_version
109
130
else :
110
- file_name = "geckodriver-%s-linux32.tar.gz" % latest_version
131
+ file_name = "geckodriver-%s-linux32.tar.gz" % use_version
111
132
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
113
134
else :
114
135
raise Exception ("Cannot determine which version of Geckodriver "
115
136
"(Firefox Driver) to download!" )
116
137
117
138
download_url = ("https://github.com/mozilla/geckodriver/"
118
139
"releases/download/"
119
- "%s/%s" % (latest_version , file_name ))
140
+ "%s/%s" % (use_version , file_name ))
120
141
elif name == "edgedriver" or name == "microsoftwebdriver" :
121
142
name = "edgedriver"
122
143
version_code = "F/8/A/F8AF50AB-3C3A-4BC4-8773-DC27B32988DD"
@@ -141,7 +162,7 @@ def main():
141
162
"%s/%s" % (major_version , file_name ))
142
163
elif name == "operadriver" or name == "operachromiumdriver" :
143
164
name = "operadriver"
144
- latest_version = "v.2.40"
165
+ use_version = "v.2.40"
145
166
if "darwin" in sys_plat :
146
167
file_name = "operadriver_mac64.zip"
147
168
platform_code = "mac64"
@@ -176,7 +197,7 @@ def main():
176
197
177
198
download_url = ("https://github.com/operasoftware/operachromiumdriver/"
178
199
"releases/download/"
179
- "%s/%s" % (latest_version , file_name ))
200
+ "%s/%s" % (use_version , file_name ))
180
201
else :
181
202
invalid_run_command ()
182
203
0 commit comments