/// <summary> /// Get the remote driver options /// </summary> /// <param name="remoteBrowser">The remote browser type</param> /// <param name="remotePlatform">The remote platform</param> /// <param name="remoteBrowserVersion">The remote browser version</param> /// <param name="remoteCapabilities">Additional remote capabilities</param> /// <returns>The remote driver options</returns> public static DriverOptions GetRemoteOptions(RemoteBrowserType remoteBrowser, string remotePlatform, string remoteBrowserVersion, Dictionary <string, object> remoteCapabilities) { DriverOptions options = null; switch (remoteBrowser) { case RemoteBrowserType.IE: options = new InternetExplorerOptions(); break; case RemoteBrowserType.Firefox: options = new FirefoxOptions(); break; case RemoteBrowserType.Chrome: options = new ChromeOptions(); break; case RemoteBrowserType.Edge: options = new EdgeOptions(); break; case RemoteBrowserType.Safari: options = new SafariOptions(); break; default: throw new ArgumentException(StringProcessor.SafeFormatter("Remote browser type '{0}' is not supported", remoteBrowser)); } // Make sure the remote capabilities dictionary exists if (remoteCapabilities == null) { remoteCapabilities = new Dictionary <string, object>(); } // Add a platform setting if one was provided if (!string.IsNullOrEmpty(remotePlatform) && !remoteCapabilities.ContainsKey("platform")) { remoteCapabilities.Add("platform", remotePlatform); } // Add a remote browser setting if one was provided if (!string.IsNullOrEmpty(remoteBrowserVersion) && !remoteCapabilities.ContainsKey("version")) { remoteCapabilities.Add("version", remoteBrowserVersion); } // Add additional capabilities to the driver options options.SetDriverOptions(remoteCapabilities); options.SetProxySettings(); return(options); }