v4.1.0 ====== * add CDP support for v96 and remove v93 * Adding test configuration for Edge in IE Mode * Refactor registration and execution of custom WebDriver commands v4.0.1 ====== * Refactored WebSocket handling of CDP. The handling of sending and receiving data via WebSocket for use with Chrome DevTools Protocol (CDP) messages was previously haphazard, and did not follow proper patterns of behavior with the .NET core WebSocket library. This commit reworks the WebSocket code to better fit the .NET processing model. The public API of the DevTools integration is largely unchanged. with the exception of the addition of the HasActiveDevToolsSession property to the IDevTools interface, allowing a user to query whether an active session exists without calling GetDevToolsSession(). * Refactored how the driver behaves when a window is closed with driver.Close() that contains the page which is the target to which the DevTools session is attached. This should make that transition more seamless and prevent errors on attaching to a new target when the next DevTools command is issued. * Refactored Cookie constructors to allow SameSite cookies to not necessarily have the Secure flag set. This allows Chromium-based browsers that do not fully comply with SameSite cookies to work. v4.0.0 ====== * Prevented getting bodies of responses for redirects, as this causes an error in the DevTools protocol. * (on behalf of Brandon Walderman) Made adding browser-specific options for Chromium-based browsers more obvious. * (on behalf of Puja Jagani) Added constructor for creating a Cookie instance with all optional arguments. Fixes issue #9361. * Add infratructure for future support of previously unsupported interaction types. * Made SlowLoadableComponent more extensible. Fixes issue #9009. * (on behalf of elgatov) Made SlowLoadableComponent use UnableToLoadMessage property. Fixes issue #8550. * (on behalf of Brandon Walderman) Removed Edge Legacy options. * Added CDP support for Chromium 95. * Added ability to monitor DOM mutations. * Restored protected ElementFactory property for use by downstream projects. v4.0.0rc3 ========= * Explicitly remove Expect header. When using the HttpClient class, the behavior for an HTTP POST request is different between .NET Framework and .NET Core. In the .NET Framework case, the client automatically adds an `Expect: 100-Continue` header. When the remote end does not send a 100 response, the client hangs waiting for it. This change explicitly removes that header for all HTTP requests. Fixes issue #9277. v4.0.0rc2 ========= * Fix TouchActions Flick overload * Fixing doc string for Network Conditions methods * Adding support for Firefox and Chromium Android options * Coercing return type of GetCastSinks() to proper datatype * implement ability to open Safari inspector * implement getting and setting permissions on Safari * implement getting the context of Firefox commands * implement ability for Chrome and Edge to set applicable permissions on browser * implement ability to launch chromium application * implement chrome and edge support for casting to devices * Add --websocket-port command line argument for geckodriver * Restore ability to add headers to WebDriver HTTP commands * Move UserAgent class to main namespace * mark deprecated chromedriver commands as obsolete and implement new preferred command * Add version-independent method for overriding user agent via CDP * Add Bidi-compliant webSocketUrl capability * Make CDP sessions autodetect close of initial attached target * Update supported version of CDP to 94, remove 92 * Rename TerminateDevToolsSession to ResetDevToolsSession * Add ability to disconnect a CDP session * Add transformation for network responses via CDP v4.0.0rc1 ========= * Set available versions of Chrome DevTools Protocol to 85, 92, and 93. * Enabled script pinning. This allows the user to add a snippet of JavaScript to a page that will be available on all subsquent pages, and not have to pass the script across the wire every time. For exceptionally large blobs of JavaScript, this may represent a significant savings in bandwidth and data sent to the remote end of the WebDriver protocol. This feature is currently only available for browsers that implement the Chrome DevTools Protocol. * Added ability to use By object with relative locators. This change also marks RelativeBy.WithTagName as obsolete. Users should change their calls to `RelativeBy.WithLocator(By.TagName(...))`. * Allow network interception to handle duplicate response headers. Headers in HTTP responses may be repeated. The previous implementation of CDP network response handling did not take this into account. Now, if a response has duplicate headers, the values will be combined into a single header with the correct name, and a comma-separated list for the value. This is complaint with RFC2616. There is an exception for the Set-Cookie header, however, which is allowed to occur multiple times, but is not combinable as to the rules of the aforementioned RFC. To account for this, a new property on HttpResponseData has been added to list the cookie headers (the `CookieHeaders` property) as found in the response. * (on behalf of Nikolay Borisenko) Modified to dispose HttpRequestMessage and HttpResponseMessage when making HTTP calls across the wire. * Updated the InternetExplorerOptions class to match the existing capabilities of the IE driver. * Updatde the events in HttpCommandExecutor to allow the user to capture the commands sent to the remote end of a WebDriver session. * Fixed the PrintOptions class to handle page ranges. Fixes issue #9755. v4.0.0b4 ======== * 4.0.0b3 was skipped for the .NET bindings and not released publicly. * Added support for finding elements in shadow DOM. This feature adds support for the WebDriver protocol commands for finding elements located in a Shadow DOM. Please note that until a driver implementation (chromedriver, geckodriver, etc.) supports the end points documented in the specification, none of these methods will function at all. * (on behalf of doctor-house) Made HttpRequestData properties settable. Fixes issue #9456. * Added proxying of CDP commands via remote/grid. * Updated Chromium-based browsers to correctly inherit Options. * Refactored .NET bindings class inheritance hierarchy. This breaks the assumption that all browser-specific driver (ChromeDriver, FirefoxDriver, EdgeDriver, etc.) are all subclasses of RemoteWebDriver. This is no longer the case. The guidance for all users has always been to write your Selenium code using the IWebDriver interface, rather than the concrete implementation classes. If you have followed this guidance in your Selenium code, this change should be largely transparent to you. If you have used the implementation classes, this might be a breaking change. * (on behalf of Puja Jagani) Removed CDP version support for 86 and 87. Added CDP version support for 90 and 91. * (on behalf of Troy Walsh) Added screenshot support for EventFiringWebElement. Fixes issue #9258. * Made DriverService InitializationTimeout property public, and also allow the property to be settable. Fixes issue #9150. v4.0.0b2 ======== * (on behalf of Artur Nebot) Set EdgeOptions to start Chromium-based Edge by default. Fixes issue #9262. * Added support for CDP in Firefox. This currently only works for Firefox Nightly. To use this feature, set the EnableDevToolsProtocol property of FirefoxOptions to true. * Fixed network interception for use with browsers that support CDP. * Made DriverService.InitializationTimeout a public settable property. Fixes issue #9150. v4.0.0b1 ======== * Added ability to listen for JavaScript exceptions and callbacks for browsers implementing the Chromium DevTools Protocol. * Added the ability of a user to intercept and manipulate network traffic between the browser and the web site being automated. To use this feature at present, the browser being automated must support the Chromium DevTools Protocol, and the driver instance must implement the IDevTools interface. Attempting to use these features will cause an exception to be thrown at runtime if the driver is not capable of this communication. To access this feature, use the following code: // Assume "driver" is a valid IWebDriver instance INetwork network = driver.Manage().Network; // Set up monitoring information by adding handlers // and subscribing to events. // Begin monitoring by starting the monitor. await network.StartMonitoring(); With this new functionality, users can do the following: * Monitor HTTP requests and responses between browser and web server * Add handlers to modify requests that meet user-defined criteria * Add handlers to supply responses for requests that meet user-defined criteria * Add handlers to supply authentication credentials for sites using basic and digest authentication * Added ISupportsPrint interface to .NET to allow use of Print method. * Exposed command executor on .NET RemoteWebDriver via IHasCommandExecutor interface. * Added support for full-page screenshot command to .NET Firefox driver. * Added support for environment capability to .NET FirefoxOptions. * Added spec-compliant properties and methods to .NET IWebElement. The W3C WebDriver Specification defines additional commands for web elements. This change introduces properties and methods for execution of those commands in the .NET language bindings. The added items on IWebElement are: * ComputedAccessibleLabel property: Allows the user to get the result of the accessible name and description computation for the accessible name of the element. * ComputedAccessibleRole property: Allows the user to get the result of the computation of the ARIA role for this element. Note that this property is subject to change its return type, as the specification needs clarification as to the return type. * GetDomProperty method: Allows the user to get the value of an IDL-defined property of the element. These properties are usually accessed via JavaScript. This method replaces the GetProperty method, which is now marked as obsolete, as it is being renamed to GetDomProperty for consistency in the Selenium API. * GetDomAttribute method: Allows the user to get the value of an attribute declared in the HTML markup of the element. This differs from the GetAttribute method, in that it _only_ returns declared attributes, whereas the GetAttribute method will return one of either a declared attribute or an IDL property of the element, without distinction between the two. * Added support for CDP versions 86, 87, 88, and v89. * (on behalf of elgatov) Enabled caching IWebElement before checking TagName is correct. When creating a SelectElement we must first check the WrappedElement tag is a elements. v2.51.0 ======= * Updated Firefox driver which includes fixes for the clicking in overlapped elements. In keeping with project support policy for Firefox, This driver has been tested with Firefox 44 (current release), 43 (immediately prior release), 38 (current ESR release), and 31 (immediately prior ESR release). * Refactoring .NET driver Options classes to descend from common class. This commit introduces a common base class for driver-specific type-safe Options classes (e.g., ChromeOptions, InternetExplorerOptions, etc.). This will help pave the way to eliminate needing to know the name or expected type of arbitrary capabilities in a future release. * Removed the incorrect ChromeOptions method introduced in 2.50.0. * Added ability to add traceCategories to performance logging preferences in ChromeOptions. Fixes issue #1591. v2.50.1 ======= * Changed ChromeOptions to have correct EnableMobileEmulation API. v2.50.0 ======= * Updated embedded Firefox driver with new click algorithm * Added type-safe options .NET for recently added Chrome capabilities. This includes adding type-safe capabilities for 'mobileEmulation', 'perfLoggingPrefs', and 'windowTypes' to ChromeOptions class. * (on behalf Edward Ned Harvey) Updated ChromeDriverService to locate Chrome driver executable in a cross-platform way. * Removed deprecated PageFactory code. * Updated implementations of EWebDriver.PageSource property and IAlert.SendKeys method for spec-compliant browsers. * Updated implementations for finding by ID, class name, and tag name for consistency between languages and for compatibility with spec- compliant drivers. * Removed the redundant IllegalLocatorException. v2.49.0 ======= * Updated .NET PageFactory to allow frame switching with located elements. Previously, if you located a `` or `