Skip to content

Commit da46a0f

Browse files
committed
Prepare the new "msedgedriver" for SeleniumBase use
1 parent 4bcebfd commit da46a0f

File tree

4 files changed

+70
-31
lines changed

4 files changed

+70
-31
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,13 @@ test-results.xml
5454
# Web Drivers
5555
chromedriver
5656
geckodriver
57+
msedgedriver
5758
operadriver
5859
MicrosoftWebDriver.exe
5960
IEDriverServer.exe
6061
chromedriver.exe
6162
geckodriver.exe
63+
msedgedriver.exe
6264
operadriver.exe
6365

6466
# Logs

seleniumbase/console_scripts/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def show_install_usage():
5959
print(" (Drivers: chromedriver, geckodriver, edgedriver")
6060
print(" iedriver, operadriver)")
6161
print(" Options:")
62-
print(" VERSION - Specify the version (For Chromedriver ONLY).")
62+
print(" VERSION - Specify version (Chromedriver / EdgeDr ONLY).")
6363
print(" (Default Chromedriver version = 2.44)")
6464
print(' Use "latest" to get the latest Chromedriver.')
6565
print(" Example:")

seleniumbase/console_scripts/sb_install.py

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
seleniumbase install {chromedriver|geckodriver|edgedriver|
66
iedriver|operadriver} [OPTIONS]
77
Options:
8-
VERSION - Specify the version (For Chromedriver ONLY)
8+
VERSION - Specify version (Chromedriver / Edgedriver ONLY)
99
(Default Chromedriver version = 2.44)
1010
Use "latest" to get the latest Chromedriver.
1111
Example:
@@ -34,6 +34,7 @@
3434
urllib3.disable_warnings()
3535
DRIVER_DIR = os.path.dirname(os.path.realpath(drivers.__file__))
3636
DEFAULT_CHROMEDRIVER_VERSION = "2.44"
37+
DEFAULT_EDGEDRIVER_VERSION = "78.0.268.0"
3738

3839

3940
def invalid_run_command():
@@ -43,7 +44,7 @@ def invalid_run_command():
4344
exp += " (Drivers: chromedriver, geckodriver, edgedriver,\n"
4445
exp += " iedriver, operadriver)\n"
4546
exp += " Options:\n"
46-
exp += " VERSION - Specify the version (For Chromedriver ONLY)."
47+
exp += " VERSION - Specify version (Chromedriver / EdgeDr ONLY)."
4748
exp += " (Default Chromedriver version = 2.44)"
4849
exp += ' Use "latest" to get the latest Chromedriver.'
4950
exp += " Example:\n"
@@ -86,6 +87,9 @@ def main():
8687
expected_contents = None
8788
platform_code = None
8889
inner_folder = None
90+
use_version = ""
91+
new_file = ""
92+
f_name = ""
8993

9094
if name == "chromedriver":
9195
use_version = DEFAULT_CHROMEDRIVER_VERSION
@@ -140,17 +144,26 @@ def main():
140144
"%s/%s" % (use_version, file_name))
141145
elif name == "edgedriver" or name == "microsoftwebdriver":
142146
name = "edgedriver"
143-
version_code = "F/8/A/F8AF50AB-3C3A-4BC4-8773-DC27B32988DD"
144-
if "win32" in sys_plat or "win64" in sys_plat or "x64" in sys_plat:
145-
file_name = "MicrosoftWebDriver.exe"
147+
use_version = DEFAULT_EDGEDRIVER_VERSION
148+
if num_args == 4:
149+
use_version = sys.argv[3]
150+
if use_version.lower() == "latest":
151+
use_version = DEFAULT_EDGEDRIVER_VERSION
152+
if "win64" in sys_plat or "x64" in sys_plat:
153+
file_name = "edgedriver_win64.zip"
154+
elif "win32" in sys_plat or "x86" in sys_plat:
155+
file_name = "edgedriver_win32.zip"
156+
elif "darwin" in sys_plat:
157+
file_name = "edgedriver_mac64.zip"
146158
else:
147159
raise Exception("Sorry! Microsoft WebDriver / EdgeDriver is "
148-
"only for Windows-based operating systems!")
149-
download_url = ("https://download.microsoft.com/download/"
150-
"%s/%s" % (version_code, file_name))
160+
"only for Windows or Mac operating systems!")
161+
download_url = ("https://msedgedriver.azureedge.net/"
162+
"%s/%s" % (use_version, file_name))
151163
elif name == "iedriver":
152164
major_version = "3.14"
153165
full_version = "3.14.0"
166+
use_version = full_version
154167
if "win32" in sys_plat:
155168
file_name = "IEDriverServer_Win32_%s.zip" % full_version
156169
elif "win64" in sys_plat or "x64" in sys_plat:
@@ -234,10 +247,16 @@ def main():
234247
print('Unzip Complete!\n')
235248
for f_name in contents:
236249
new_file = downloads_folder + '/' + str(f_name)
237-
print("%s saved!\n" % new_file)
238-
print("Making %s executable ..." % new_file)
250+
print("The file [%s] was saved to:\n%s\n" % (f_name, new_file))
251+
print("Making [%s] executable ..." % f_name)
239252
make_executable(new_file)
240-
print("%s is now ready for use!" % new_file)
253+
print("[%s] is now ready for use!\n" % f_name)
254+
print('(If running on a Selenium Grid, copy [%s] to your '
255+
'System PATH.\n'
256+
' E.g. to the "/usr/local/bin/" folder on Linux '
257+
'systems.)\n' % name)
258+
print("Location of [%s %s]:\n%s" % (
259+
f_name, use_version, new_file))
241260
print("")
242261
elif name == "operadriver":
243262
if len(contents) != 3:
@@ -266,10 +285,13 @@ def main():
266285
inner_driver = downloads_folder + '/' + inner_folder + driver_file
267286
inner_sha = downloads_folder + '/' + inner_folder + "sha512_sum"
268287
shutil.copyfile(inner_driver, driver_path)
269-
print("%s saved!\n" % driver_path)
270-
print("Making %s executable ..." % driver_path)
288+
print("The file [%s] was saved to:\n%s\n" % (
289+
driver_file, driver_path))
290+
print("Making [%s] executable ..." % driver_file)
271291
make_executable(driver_path)
272-
print("%s is now ready for use!" % driver_path)
292+
print("[%s] is now ready for use!\n" % driver_file)
293+
print("Location of [%s %s]:\n%s" % (
294+
driver_file, use_version, driver_path))
273295
# clean up extra files
274296
if os.path.exists(inner_driver):
275297
os.remove(inner_driver)
@@ -301,10 +323,16 @@ def main():
301323
print('Unzip Complete!\n')
302324
for f_name in contents:
303325
new_file = downloads_folder + '/' + str(f_name)
304-
print("%s saved!\n" % new_file)
305-
print("Making %s executable ..." % new_file)
326+
print("The file [%s] was saved to:\n%s\n" % (f_name, new_file))
327+
print("Making [%s] executable ..." % f_name)
306328
make_executable(new_file)
307-
print("%s is now ready for use!" % new_file)
329+
print("[%s] is now ready for use!\n" % f_name)
330+
print('(If running on a Selenium Grid, copy [%s] to your '
331+
'System PATH.\n'
332+
' E.g. to the "/usr/local/bin/" folder on Linux '
333+
'systems.)\n' % name)
334+
print("Location of [%s %s]:\n%s" % (
335+
f_name, use_version, new_file))
308336
print("")
309337
elif len(contents) == 0:
310338
raise Exception("Tar file %s is empty!" % tar_file_path)
@@ -313,9 +341,10 @@ def main():
313341
else:
314342
# Not a .zip file or a .tar.gz file. Just a direct download.
315343
if "Driver" in file_name or "driver" in file_name:
316-
print("Making %s executable ..." % file_path)
344+
print("Making [%s] executable ..." % file_name)
317345
make_executable(file_path)
318-
print("%s is now ready for use!\n" % file_path)
346+
print("[%s] is now ready for use!\n" % file_name)
347+
print("Location of [%s]:\n%s\n" % (file_name, file_path))
319348

320349

321350
if __name__ == "__main__":

seleniumbase/core/browser_launcher.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@
3434
if "darwin" in PLATFORM or "linux" in PLATFORM:
3535
LOCAL_CHROMEDRIVER = DRIVER_DIR + '/chromedriver'
3636
LOCAL_GECKODRIVER = DRIVER_DIR + '/geckodriver'
37+
LOCAL_EDGEDRIVER = DRIVER_DIR + '/msedgedriver'
3738
LOCAL_OPERADRIVER = DRIVER_DIR + '/operadriver'
3839
elif "win32" in PLATFORM or "win64" in PLATFORM or "x64" in PLATFORM:
3940
IS_WINDOWS = True
40-
LOCAL_EDGEDRIVER = DRIVER_DIR + '/MicrosoftWebDriver.exe'
41+
LOCAL_EDGEDRIVER = DRIVER_DIR + '/msedgedriver.exe'
4142
LOCAL_IEDRIVER = DRIVER_DIR + '/IEDriverServer.exe'
4243
LOCAL_CHROMEDRIVER = DRIVER_DIR + '/chromedriver.exe'
4344
LOCAL_GECKODRIVER = DRIVER_DIR + '/geckodriver.exe'
@@ -507,17 +508,24 @@ def get_local_driver(
507508
else:
508509
return webdriver.Ie(capabilities=ie_capabilities)
509510
elif browser_name == constants.Browser.EDGE:
510-
if not IS_WINDOWS:
511-
raise Exception(
512-
"Edge Browser is for Windows-based operating systems only!")
513-
edge_capabilities = DesiredCapabilities.EDGE.copy()
514511
if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
515512
make_driver_executable_if_not(LOCAL_EDGEDRIVER)
516-
return webdriver.Edge(
517-
capabilities=edge_capabilities,
518-
executable_path=LOCAL_EDGEDRIVER)
513+
try:
514+
# The new Microsoft Edge browser is based on Chrome
515+
chrome_options = _set_chrome_options(
516+
downloads_path, headless,
517+
proxy_string, proxy_auth, proxy_user, proxy_pass,
518+
user_agent, disable_csp, enable_sync, user_data_dir,
519+
extension_zip, extension_dir)
520+
return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER,
521+
options=chrome_options)
522+
except Exception:
523+
try:
524+
return webdriver.Chrome(executable_path=LOCAL_EDGEDRIVER)
525+
except Exception:
526+
return webdriver.Edge(executable_path=LOCAL_EDGEDRIVER)
519527
else:
520-
return webdriver.Edge(capabilities=edge_capabilities)
528+
return webdriver.Edge()
521529
elif browser_name == constants.Browser.SAFARI:
522530
return webdriver.Safari()
523531
elif browser_name == constants.Browser.OPERA:
@@ -535,8 +543,8 @@ def get_local_driver(
535543
try:
536544
chrome_options = _set_chrome_options(
537545
downloads_path, headless,
538-
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
539-
disable_csp, enable_sync, user_data_dir,
546+
proxy_string, proxy_auth, proxy_user, proxy_pass,
547+
user_agent, disable_csp, enable_sync, user_data_dir,
540548
extension_zip, extension_dir)
541549
if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
542550
make_driver_executable_if_not(LOCAL_CHROMEDRIVER)

0 commit comments

Comments
 (0)