@@ -92,6 +92,8 @@ def main(override=None):
92
92
sys .argv = ["seleniumbase" , "install" , "edgedriver" ]
93
93
elif override == "geckodriver" :
94
94
sys .argv = ["seleniumbase" , "install" , "geckodriver" ]
95
+ elif override == "iedriver" :
96
+ sys .argv = ["seleniumbase" , "install" , "iedriver" ]
95
97
96
98
num_args = len (sys .argv )
97
99
if (
@@ -108,6 +110,9 @@ def main(override=None):
108
110
109
111
file_name = None
110
112
download_url = None
113
+ headless_ie_url = None
114
+ headless_ie_exists = False
115
+ headless_ie_file_name = None
111
116
downloads_folder = DRIVER_DIR
112
117
sys_plat = sys .platform
113
118
expected_contents = None
@@ -336,6 +341,19 @@ def main(override=None):
336
341
"https://selenium-release.storage.googleapis.com/"
337
342
"%s/%s" % (major_version , file_name )
338
343
)
344
+ headless_ie_version = "v1.4"
345
+ headless_ie_file_name = "headless-selenium-for-win-v1-4.zip"
346
+ headless_ie_url = (
347
+ "https://github.com/kybu/headless-selenium-for-win/"
348
+ "releases/download/"
349
+ "%s/%s" % (headless_ie_version , headless_ie_file_name )
350
+ )
351
+ url_request = requests .get (headless_ie_url )
352
+ if url_request .ok :
353
+ headless_ie_exists = True
354
+ msg = c2 + "HeadlessIEDriver version for download" + cr
355
+ p_version = c3 + headless_ie_version + cr
356
+ print ("\n *** %s = %s" % (msg , p_version ))
339
357
elif name == "operadriver" or name == "operachromiumdriver" :
340
358
name = "operadriver"
341
359
use_version = DEFAULT_OPERADRIVER_VERSION
@@ -411,6 +429,86 @@ def main(override=None):
411
429
if not os .path .exists (downloads_folder ):
412
430
os .mkdir (downloads_folder )
413
431
432
+ if headless_ie_exists :
433
+ headless_ie_file_path = downloads_folder + "/" + headless_ie_file_name
434
+ print (
435
+ "\n Downloading %s from:\n %s ..."
436
+ % (headless_ie_file_name , headless_ie_url )
437
+ )
438
+ remote_file = requests .get (headless_ie_url )
439
+ with open (headless_ie_file_path , "wb" ) as file :
440
+ file .write (remote_file .content )
441
+ print ("Download Complete!\n " )
442
+ zip_file_path = headless_ie_file_path
443
+ zip_ref = zipfile .ZipFile (zip_file_path , "r" )
444
+ contents = zip_ref .namelist ()
445
+ h_ie_fn = headless_ie_file_name .split (".zip" )[0 ]
446
+ expected_contents = [
447
+ "%s/" % h_ie_fn ,
448
+ "%s/ruby_example/" % h_ie_fn ,
449
+ "%s/ruby_example/Gemfile" % h_ie_fn ,
450
+ "%s/ruby_example/Gemfile.lock" % h_ie_fn ,
451
+ "%s/ruby_example/ruby_example.rb" % h_ie_fn ,
452
+ "%s/desktop_utils.exe" % h_ie_fn ,
453
+ "%s/headless_ie_selenium.exe" % h_ie_fn ,
454
+ "%s/README.md" % h_ie_fn ,
455
+ ]
456
+ if len (contents ) > 8 :
457
+ raise Exception ("Unexpected content in HeadlessIEDriver Zip file!" )
458
+ for content in contents :
459
+ if content not in expected_contents :
460
+ raise Exception (
461
+ "Expected file [%s] missing from [%s]"
462
+ % (content , expected_contents )
463
+ )
464
+ # Zip file is valid. Proceed.
465
+ driver_path = None
466
+ driver_file = None
467
+ filename = None
468
+ for f_name in contents :
469
+ # Remove existing version if exists
470
+ str_name = str (f_name )
471
+ new_file = downloads_folder + "/" + str_name
472
+ if str_name == "%s/headless_ie_selenium.exe" % h_ie_fn :
473
+ driver_file = str_name
474
+ driver_path = new_file
475
+ filename = "headless_ie_selenium.exe"
476
+ if os .path .exists (new_file ):
477
+ os .remove (new_file )
478
+ if not driver_file or not driver_path or not filename :
479
+ raise Exception ("headless_ie_selenium.exe missing from Zip file!" )
480
+ print ("Extracting %s from %s ..." % (filename , headless_ie_file_name ))
481
+ zip_ref .extractall (downloads_folder )
482
+ zip_ref .close ()
483
+ os .remove (zip_file_path )
484
+ shutil .copyfile (driver_path , "%s/%s" % (downloads_folder , filename ))
485
+ print ("Unzip Complete!\n " )
486
+ to_remove = [
487
+ "%s/%s/ruby_example/Gemfile" % (downloads_folder , h_ie_fn ),
488
+ "%s/%s/ruby_example/Gemfile.lock" % (downloads_folder , h_ie_fn ),
489
+ "%s/%s/ruby_example/ruby_example.rb" % (downloads_folder , h_ie_fn ),
490
+ "%s/%s/desktop_utils.exe" % (downloads_folder , h_ie_fn ),
491
+ "%s/%s/headless_ie_selenium.exe" % (downloads_folder , h_ie_fn ),
492
+ "%s/%s/README.md" % (downloads_folder , h_ie_fn ),
493
+ ]
494
+ for file_to_remove in to_remove :
495
+ if os .path .exists (file_to_remove ):
496
+ os .remove (file_to_remove )
497
+ if os .path .exists ("%s/%s/ruby_example/" % (downloads_folder , h_ie_fn )):
498
+ # Only works if the directory is empty
499
+ os .rmdir ("%s/%s/ruby_example/" % (downloads_folder , h_ie_fn ))
500
+ if os .path .exists ("%s/%s/" % (downloads_folder , h_ie_fn )):
501
+ # Only works if the directory is empty
502
+ os .rmdir ("%s/%s/" % (downloads_folder , h_ie_fn ))
503
+ driver_path = "%s/%s" % (downloads_folder , filename )
504
+ print (
505
+ "The file [%s] was saved to:\n %s%s%s\n "
506
+ % (filename , c3 , driver_path , cr )
507
+ )
508
+ print ("Making [%s %s] executable ..." % (driver_file , use_version ))
509
+ make_executable (driver_path )
510
+ print ("%s[%s] is now ready for use!%s" % (c1 , driver_file , cr ))
511
+
414
512
print ("\n Downloading %s from:\n %s ..." % (file_name , download_url ))
415
513
remote_file = requests .get (download_url )
416
514
with open (file_path , "wb" ) as file :
0 commit comments