/// <summary> /// Get the default web driver (for the specified browser type) based on the test run configuration /// </summary> /// <param name="browser">The type of browser</param> /// <returns>A web driver</returns> public static IWebDriver GetBrowserWithDefaultConfiguration(BrowserType browser) { IWebDriver webDriver = null; TimeSpan timeout = SeleniumConfig.GetCommandTimeout(); string size = SeleniumConfig.GetBrowserSize(); try { switch (browser) { case BrowserType.IE: webDriver = GetIEDriver(timeout, GetDefaultIEOptions(), size); break; case BrowserType.Firefox: webDriver = GetFirefoxDriver(timeout, GetDefaultFirefoxOptions(), size); break; case BrowserType.Chrome: webDriver = GetChromeDriver(timeout, GetDefaultChromeOptions(), size); break; case BrowserType.HeadlessChrome: webDriver = GetHeadlessChromeDriver(timeout, GetDefaultHeadlessChromeOptions(size)); break; case BrowserType.Edge: webDriver = GetEdgeDriver(timeout, GetDefaultEdgeOptions(), size); break; case BrowserType.Remote: webDriver = new RemoteWebDriver(SeleniumConfig.GetHubUri(), GetDefaultRemoteOptions().ToCapabilities(), SeleniumConfig.GetCommandTimeout()); break; default: throw new ArgumentException(StringProcessor.SafeFormatter("Browser type '{0}' is not supported", browser)); } return(webDriver); } catch (Exception e) { if (e.GetType() == typeof(ArgumentException)) { throw e; } else { try { // Try to cleanup webDriver?.KillDriver(); } catch (Exception quitExecption) { throw new Exception("Web driver setup and teardown failed. Your web driver may be out of date", quitExecption); } } // Log that something went wrong throw new Exception("Your web driver may be out of date or unsupported.", e); } }