@@ -38,36 +38,34 @@ var binaries = {
38
38
standalone : {
39
39
name : 'selenium standalone' ,
40
40
isDefault : true ,
41
- defaultVersion : versions . selenium ,
42
41
osType : 'ANY' ,
43
- prefix : function ( ) {
44
- return seleniumPrefix ;
45
- } ,
46
- version : function ( ) {
47
- return seleniumVersion ;
42
+ prefix : 'selenium-server-standalone-' ,
43
+ defaultVersion : versions . selenium ,
44
+ version : versions . selenium ,
45
+ getVersion : function ( ) {
46
+ return this . version ;
48
47
} ,
49
48
suffix : function ( ) {
50
49
return '.jar' ;
51
50
} ,
52
51
filename : function ( ) {
53
- return this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
52
+ return this . prefix + this . getVersion ( ) + this . suffix ( ) ;
54
53
} ,
55
54
cdn : 'https://selenium-release.storage.googleapis.com/' ,
56
55
url : function ( ) {
57
- return this . cdn + shortVersion ( this . version ( ) ) + '/' +
58
- this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
56
+ return this . cdn + shortVersion ( this . getVersion ( ) ) + '/' +
57
+ this . prefix + this . getVersion ( ) + this . suffix ( ) ;
59
58
}
60
59
} ,
61
60
chrome : {
62
61
name : 'chromedriver' ,
63
62
isDefault : true ,
64
63
osType : 'ANY' ,
64
+ prefix : 'chromedriver_' ,
65
65
defaultVersion : versions . chromedriver ,
66
- prefix : function ( ) {
67
- return chromePrefix ;
68
- } ,
69
- version : function ( ) {
70
- return chromeVersion ;
66
+ version : versions . chromedriver ,
67
+ getVersion : function ( ) {
68
+ return this . version ;
71
69
} ,
72
70
suffix : function ( ) {
73
71
if ( os . type ( ) == 'Darwin' ) {
@@ -83,66 +81,41 @@ var binaries = {
83
81
}
84
82
} ,
85
83
filename : function ( ) {
86
- return this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
84
+ return this . prefix + this . getVersion ( ) + this . suffix ( ) ;
87
85
} ,
88
86
cdn : 'https://chromedriver.storage.googleapis.com/' ,
89
87
url : function ( ) {
90
- return this . cdn + this . version ( ) + '/' + this . prefix ( ) + this . suffix ( ) ;
88
+ return this . cdn + this . getVersion ( ) + '/' + this . prefix + this . suffix ( ) ;
91
89
}
92
90
} ,
93
91
ie : {
94
92
name : 'IEDriver' ,
95
93
isDefault : false ,
96
94
osType : 'Windows_NT' ,
95
+ prefix : 'IEDriverServer' ,
96
+ selectIe32 : false ,
97
97
defaultVersion : versions . iedriver ,
98
- prefix : function ( ) {
98
+ version : versions . iedriver ,
99
+ getVersion : function ( ) {
99
100
if ( os . type ( ) == 'Windows_NT' ) {
100
- if ( os . arch ( ) = = 'x64' ) {
101
- return iePrefix + 'x64_' ;
101
+ if ( this . selectIe32 || os . arch ( ) ! = 'x64' ) {
102
+ return '_Win32_' + this . version ;
102
103
} else {
103
- return iePrefix + 'Win32_' ;
104
+ return '_x64_' + this . version ;
104
105
}
105
106
}
106
- return iePrefix ;
107
- } ,
108
- version : function ( ) {
109
- return ieVersion ;
107
+ return '' ;
110
108
} ,
111
109
suffix : function ( ) {
112
110
return '.zip' ;
113
111
} ,
114
112
filename : function ( ) {
115
- return this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
113
+ return this . prefix + this . getVersion ( ) + this . suffix ( ) ;
116
114
} ,
117
115
cdn : 'https://selenium-release.storage.googleapis.com/' ,
118
116
url : function ( ) {
119
- return this . cdn + shortVersion ( this . version ( ) ) + '/' +
120
- this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
121
- }
122
- } ,
123
- ie32 : {
124
- name : 'IEDriver-32bit' ,
125
- isDefault : false ,
126
- osType : 'Windows_NT' ,
127
- defaultVersion : versions . iedriver ,
128
- prefix : function ( ) {
129
- if ( os . type ( ) == 'Windows_NT' ) {
130
- return iePrefix + 'Win32_' ;
131
- }
132
- } ,
133
- version : function ( ) {
134
- return ieVersion ;
135
- } ,
136
- suffix : function ( ) {
137
- return '.zip' ;
138
- } ,
139
- filename : function ( ) {
140
- return this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
141
- } ,
142
- cdn : 'https://selenium-release.storage.googleapis.com/' ,
143
- url : function ( ) {
144
- return this . cdn + shortVersion ( this . version ( ) ) + '/' +
145
- this . prefix ( ) + this . version ( ) + this . suffix ( ) ;
117
+ return this . cdn + shortVersion ( this . version ) + '/' +
118
+ this . prefix + this . getVersion ( ) + this . suffix ( ) ;
146
119
}
147
120
}
148
121
} ;
@@ -161,13 +134,13 @@ var cli = optimist.
161
134
describe ( 'versions.standalone' , 'Optional selenium standalone server version' ) .
162
135
default ( 'versions.standalone' , versions . selenium ) .
163
136
string ( 'versions.standalone' ) .
164
- describe ( 'versions.chromedriver ' , 'Optional chrome driver version' ) .
165
- default ( 'versions.chromedriver ' , versions . chromedriver ) .
166
- string ( 'versions.chromedriver ' ) ;
137
+ describe ( 'versions.chrome ' , 'Optional chrome driver version' ) .
138
+ default ( 'versions.chrome ' , versions . chromedriver ) .
139
+ string ( 'versions.chrome ' ) ;
167
140
if ( os . type ( ) == 'Windows_NT' ) {
168
- cli . describe ( 'versions.iedriver ' , 'Optional internet explorer version' ) .
169
- default ( 'versions.iedriver ' , versions . iedriver ) .
170
- string ( 'versions.iedriver ' ) ;
141
+ cli . describe ( 'versions.ie ' , 'Optional internet explorer version' ) .
142
+ default ( 'versions.ie ' , versions . iedriver ) .
143
+ string ( 'versions.ie ' ) ;
171
144
}
172
145
cli . describe ( 'ignore_ssl' , 'Ignore SSL certificates' ) . boolean ( 'ignore_ssl' ) .
173
146
default ( 'ignore_ssl' , false ) .
@@ -180,6 +153,12 @@ for (var bin in binaries) {
180
153
boolean ( bin ) .
181
154
default ( bin , binaries [ bin ] . isDefault ) ;
182
155
}
156
+
157
+ }
158
+ if ( os . type ( ) == 'Windows_NT' ) {
159
+ cli . describe ( 'ie32' , 'Install or update IEDriver 32-bit (overrides ie option)' ) .
160
+ boolean ( 'ie32' ) .
161
+ default ( 'ie32' , false ) ;
183
162
}
184
163
185
164
var argv = cli .
@@ -279,10 +258,10 @@ var spawnCommand = function(command, args) {
279
258
*/
280
259
var downloadIfNew = function ( bin , outputDir , existingFiles , opt_callback ) {
281
260
if ( ! bin . exists ) {
282
- console . log ( 'Updating ' + bin . name + ' to version ' + bin . version ( ) ) ;
261
+ console . log ( 'Updating ' + bin . name + ' to version ' + bin . version ) ;
283
262
var url = bin . url ( ) ;
284
263
if ( ! url ) {
285
- console . error ( bin . name + ' v' + bin . version ( ) +
264
+ console . error ( bin . name + ' v' + bin . version +
286
265
' is not available for your system.' ) ;
287
266
return ;
288
267
}
@@ -313,24 +292,22 @@ var existingFiles = fs.readdirSync(argv.out_dir);
313
292
314
293
// update versions
315
294
if ( argv . versions ) {
316
- if ( argv . versions . standalone ) {
317
- seleniumVersion = argv . versions . standalone ;
318
- }
319
- if ( argv . versions . chromedriver ) {
320
- chromeVersion = argv . versions . chromedriver ;
321
- }
322
- if ( argv . versions . iedriver ) {
323
- ieVersion = argv . versions . iedriver ;
295
+ for ( binary in argv . versions ) {
296
+ if ( binaries [ binary ] ) {
297
+ binaries [ binary ] . version = argv . versions [ binary ] ;
298
+ }
324
299
}
325
-
326
300
}
327
301
302
+ // update the ie32 flag
303
+ binaries . ie . selectIe32 = argv . ie32 ;
304
+
328
305
for ( name in binaries ) {
329
306
bin = binaries [ name ] ;
330
307
bin . cdn = argv . alternate_cdn || bin . cdn ;
331
308
var exists = fs . existsSync ( path . join ( argv . out_dir , bin . filename ( ) ) ) ;
332
309
var outOfDateExists = existingFiles . some ( function ( file ) {
333
- return file . indexOf ( bin . prefix ( ) ) !== - 1 && file !== bin . filename ( ) ;
310
+ return file . indexOf ( bin . prefix !== - 1 && file !== bin . filename ( ) ) ;
334
311
} ) ;
335
312
bin . exists = exists ;
336
313
bin . outOfDateExists = outOfDateExists ;
@@ -351,12 +328,12 @@ switch (argv._[0]) {
351
328
if ( binaries . chrome . exists ) {
352
329
args . push ( '-Dwebdriver.chrome.driver=' +
353
330
path . join ( argv . out_dir , executableName (
354
- binaries . chrome . prefix ( ) + binaries . chrome . version ( ) ) ) ) ;
331
+ binaries . chrome . prefix + binaries . chrome . getVersion ( ) ) ) ) ;
355
332
}
356
- if ( binaries . ie . exists || binaries . ie32 . exists ) {
333
+ if ( binaries . ie . exists ) {
357
334
args . push ( '-Dwebdriver.ie.driver=' +
358
335
path . join ( argv . out_dir , executableName (
359
- binaries . ie . prefix ( ) + binaries . ie . version ( ) ) ) ) ;
336
+ binaries . ie . prefix + binaries . ie . getVersion ( ) ) ) ) ;
360
337
}
361
338
var seleniumProcess = spawnCommand ( 'java' , args ) ;
362
339
console . log ( 'seleniumProcess.pid: ' + seleniumProcess . pid ) ;
@@ -385,10 +362,10 @@ switch (argv._[0]) {
385
362
if ( existFile . endsWith ( '.zip' ) ) {
386
363
continue ;
387
364
}
388
- if ( existFile . includes ( bin . prefix ( ) ) ) {
365
+ if ( existFile . includes ( bin . prefix ) ) {
389
366
binaryExists = true ;
390
367
versionsDl . push ( existFile
391
- . replace ( bin . prefix ( ) , '' ) . replace ( bin . suffix ( ) , '' ) ) ;
368
+ . replace ( bin . prefix , '' ) . replace ( bin . suffix ( ) , '' ) ) ;
392
369
}
393
370
}
394
371
@@ -402,6 +379,12 @@ switch (argv._[0]) {
402
379
}
403
380
for ( var versionPos in versionsDl ) {
404
381
var version = versionsDl [ versionPos ] ;
382
+ if ( version . endsWith ( '.exe' ) ) {
383
+ version = version . replace ( '.exe' , '' ) ;
384
+ }
385
+ if ( version . startsWith ( '_' ) ) {
386
+ version = version . substring ( 1 , version . length ) ;
387
+ }
405
388
versionLog += version ;
406
389
if ( version == bin . defaultVersion ) {
407
390
versionLog += ' [default]'
@@ -428,39 +411,27 @@ switch (argv._[0]) {
428
411
// windows: chromedriver.exe
429
412
zip . extractAllTo ( argv . out_dir , true ) ;
430
413
if ( os . type ( ) != 'Windows_NT' ) {
431
- var filePath = path . join ( argv . out_dir , binaries . chrome . prefix ( ) +
432
- binaries . chrome . version ( ) ) ;
414
+ var filePath = path . join ( argv . out_dir , binaries . chrome . prefix +
415
+ binaries . chrome . getVersion ( ) ) ;
433
416
fs . renameSync ( path . join ( argv . out_dir , 'chromedriver' ) , filePath ) ;
434
417
fs . chmodSync ( filePath , 0755 ) ;
435
418
}
436
419
else {
437
- var filePath = path . join ( argv . out_dir , binaries . chrome . prefix ( ) +
438
- binaries . chrome . version ( ) + '.exe' ) ;
420
+ var filePath = path . join ( argv . out_dir , binaries . chrome . prefix +
421
+ binaries . chrome . getVersion ( ) + '.exe' ) ;
439
422
fs . renameSync ( path . join ( argv . out_dir , 'chromedriver.exe' ) , filePath ) ;
440
423
}
441
424
} ) ;
442
425
}
443
- if ( argv . ie ) {
444
- downloadIfNew ( binaries . ie , argv . out_dir , existingFiles ,
445
- function ( filename ) {
446
- var zip = new AdmZip ( filename ) ;
447
- // Expected contents of the zip:
448
- // IEDriverServer.exe
449
- zip . extractAllTo ( argv . out_dir , true ) ;
450
- var filePath = path . join ( argv . out_dir , bianries . ie . prefix ( ) +
451
- binaries . ie . version ( ) ) ;
452
- fs . renameSync ( path . join ( argv . out_dir , 'IEDriverServer.exe' ) , filePath ) ;
453
- } ) ;
454
- }
455
- if ( argv . ie32 ) {
456
- downloadIfNew ( binaries . ie32 , argv . out_dir , existingFiles ,
426
+ if ( argv . ie || argv . ie32 ) {
427
+ downloadIfNew ( binaries . ie , argv . out_dir , existingFiles ,
457
428
function ( filename ) {
458
429
var zip = new AdmZip ( filename ) ;
459
430
// Expected contents of the zip:
460
431
// IEDriverServer.exe
461
432
zip . extractAllTo ( argv . out_dir , true ) ;
462
- var filePath = path . join ( argv . out_dir , bianries . ie32 . prefix ( ) +
463
- binaries . ie32 . version ( ) ) ;
433
+ var filePath = path . join ( argv . out_dir , binaries . ie . prefix +
434
+ binaries . ie . getVersion ( ) ) ;
464
435
fs . renameSync ( path . join ( argv . out_dir , 'IEDriverServer.exe' ) , filePath ) ;
465
436
} ) ;
466
437
}
@@ -469,11 +440,7 @@ switch (argv._[0]) {
469
440
existingFiles . forEach ( function ( file ) {
470
441
for ( var binPos in binaries ) {
471
442
var bin = binaries [ binPos ] ;
472
- var prefix = bin . prefix ( ) ;
473
- if ( prefix && ( prefix . endsWith ( '_' ) || prefix . endsWith ( '-' ) ) ) {
474
- prefix = prefix . substring ( 0 , prefix . length - 1 ) ;
475
- }
476
- if ( file . indexOf ( prefix ) != - 1 ) {
443
+ if ( file . indexOf ( bin . prefix ) != - 1 ) {
477
444
fs . unlinkSync ( path . join ( argv . out_dir , file ) ) ;
478
445
}
479
446
}
0 commit comments