/// <summary> /// Initializes a new instance of the <see cref="WebDriver"/> class. /// </summary> /// <param name="executor">The <see cref="ICommandExecutor"/> object used to execute commands.</param> /// <param name="capabilities">The <see cref="ICapabilities"/> object used to configuer the driver session.</param> protected WebDriver(ICommandExecutor executor, ICapabilities capabilities) { this.executor = executor; this.StartSession(capabilities); this.elementFactory = new WebElementFactory(this); this.network = new NetworkManager(this); this.registeredCommands.AddRange(DriverCommand.KnownCommands); if ((this as ISupportsLogs) != null) { // Only add the legacy log commands if the driver supports // retrieving the logs via the extension end points. this.RegisterDriverCommand(DriverCommand.GetAvailableLogTypes, new HttpCommandInfo(HttpCommandInfo.GetCommand, "/session/{sessionId}/se/log/types"), true); this.RegisterDriverCommand(DriverCommand.GetLog, new HttpCommandInfo(HttpCommandInfo.PostCommand, "/session/{sessionId}/se/log"), true); } }
/// <summary> /// Initializes a new instance of the <see cref="WebDriver"/> class. /// </summary> /// <param name="executor">The <see cref="ICommandExecutor"/> object used to execute commands.</param> /// <param name="capabilities">The <see cref="ICapabilities"/> object used to configuer the driver session.</param> protected WebDriver(ICommandExecutor executor, ICapabilities capabilities) { this.executor = executor; this.StartSession(capabilities); this.elementFactory = new WebElementFactory(this); this.network = new NetworkManager(this); this.registeredCommands.AddRange(DriverCommand.KnownCommands); if ((this as ISupportsLogs) != null) { // Only add the legacy log commands if the driver supports // retrieving the logs via the extension end points. this.RegisterDriverCommand(DriverCommand.GetAvailableLogTypes, new HttpCommandInfo(HttpCommandInfo.GetCommand, "/session/{sessionId}/se/log/types"), true); this.RegisterDriverCommand(DriverCommand.GetLog, new HttpCommandInfo(HttpCommandInfo.PostCommand, "/session/{sessionId}/se/log"), true); } // These below code exists solely to support obsolete protocol end points. // They should be removed at the earliest available opportunity. if (this.Capabilities.HasCapability(CapabilityType.SupportsApplicationCache)) { object appCacheCapability = this.Capabilities.GetCapability(CapabilityType.SupportsApplicationCache); if (appCacheCapability is bool && (bool)appCacheCapability) { this.appCache = new ApplicationCache(this); } } if (this.Capabilities.HasCapability(CapabilityType.SupportsLocationContext)) { object locationContextCapability = this.Capabilities.GetCapability(CapabilityType.SupportsLocationContext); if (locationContextCapability is bool && (bool)locationContextCapability) { this.locationContext = new LocationContext(this); } } if (this.Capabilities.HasCapability(CapabilityType.SupportsWebStorage)) { object webContextCapability = this.Capabilities.GetCapability(CapabilityType.SupportsWebStorage); if (webContextCapability is bool && (bool)webContextCapability) { this.storage = new WebStorage(this); } } }