public static IWebDriver CreateRemoteDriver(this WebDriverConfig config)
        {
            config.ValidateNotNull(nameof(config));
            config.ValidateDriverName("Remote");

            Uri driverUri;

            if (config.DriverLocation == null)
            {
                driverUri = new Uri("http://127.0.0.1:4444/wd/hub/");
            }
            else
            {
                driverUri = new Uri(config.DriverLocation);
            }
            var capabilities = new RemoteSessionSettings();

            if (config.Capabilities != null)
            {
                foreach (var capability in config.Capabilities)
                {
                    capabilities.AddMetadataSetting(capability.Key, capability.Value);
                }
            }
            var commandTimeout = GetCommandTimeout(config);

            return(new RemoteWebDriver(driverUri, capabilities, commandTimeout)
                   .ApplyCommon(config));
        }
        public static IWebDriver CreateFirefoxDriver(this WebDriverConfig config)
        {
            config.ValidateNotNull(nameof(config));
            config.ValidateDriverName("Firefox");

            var options = new FirefoxOptions();

            options.PlatformName   = config.PlatformName;
            options.BrowserVersion = config.BrowserVersion;
            options.AddAdditionalCapabilies(config);
            if (config.Arguments.IsNotNullOrEmpty())
            {
                options.AddArguments(config.Arguments);
            }
            var commandTimeout = GetCommandTimeout(config);

            return((config.IsLocal()
                    ? new FirefoxDriver(GetDriverPath(config), options, commandTimeout)
                    : new RemoteWebDriver(GetRemoteHubUri(config), options.ToCapabilities(), commandTimeout))
                   .ApplyCommon(config));
        }
        public static IWebDriver CreateFirefoxDriver(this WebDriverConfig config)
        {
            config.ValidateNotNull(nameof(config));
            config.ValidateDriverName("Firefox");

            var path    = GetDriverPath(config);
            var options = new FirefoxOptions();

            if (config.Arguments.IsNotNullOrEmpty())
            {
                options.AddArguments(config.Arguments);
            }
            if (config.Capabilities != null)
            {
                foreach (var capability in config.Capabilities)
                {
                    options.AddAdditionalCapability(capability.Key, capability.Value);
                }
            }
            var commandTimeout = GetCommandTimeout(config);

            return(new FirefoxDriver(path, options, commandTimeout)
                   .ApplyCommon(config));
        }