v4.27.0 ====== * Copyright dotnet (#13522) * Add CDP for Chrome 131 and remove 128 * Add CDP deprecation warning for Firefox (#14759) * Add ChromiumNetworkConditions to command serialization (#14716) * Add Dictionary as well-known types for json serialization * Add more well-known dictionary types for capability json serialization * Add reflection-based JSON serialization fallback to `Command`s (#14732) * Allow `RemoteSessionSettings` to use any value for metadata (#14726) * Deprecate WebElement.GetAttribute() (#14676) * Enable NRT on exceptional types (#14672) * Fix API docs static generation (#14651) * Fix `RelativeBy.Near` and empty list return (#14737) * Gracefully handle clashing device names in Actions (#14713) * Make FirefoxProfile AOT-safe (#14742) * Make Selenium Manager's AOT safety explicit (#14733) * Modernize exception handling in tests via assert that throws (#14776) * Propagate async throughout test setup and teardown (#14775) * Remove JSON serialization from `.ToString()` methods (#14736) * Solidify nullability of `PinnedScript` (#14708) * Update dependency System.Text.Json to 8.0.5 v4.26.1 ====== * [bidi] Reveal browsing context module in bidi instance (#14684) * Fix adding cookies when ReturnedCookie class is used (#14697) v4.26.0 ====== * [bidi] Fix web socket communication for .net framework * Don't include http headers in internal logs (#14546) * Don't write trace log message when waiting until driver service is initialized (#14557) * Support GetLog command by Remote Web Driver (#14549) * Add more internal logs around CDP DevTools communication (#14558) * Interactions with Selenium Manager are AOT compatible (#14481) * Allow setting of PageDimensions and PageMargins in PrintOptions directly (#14593) * Fix devtools check in `NetworkManager` to determine CDP is supported (#14638) * Lazy-load Selenium manager binary location (#14639) * [bidi] Second round of BiDi implementation (#14566) * Add CDP for Chrome 130 and remove 127 v4.25.0 ====== * Add CDP for Chrome 129 and remove 126 * BiDi implementation (#14318) * Add BiDi OriginalOpener in browsing context info * [bidi] Forward subscription options in browser context for log module * [bidi] Enable implicit ways to specify page ranges for printing * Workaround using pre-processor directive (#14499) * [bidi] Simplify browsing context type enumeration * [bidi] Expose BiDi associated reference in browsing context * [bidi] Rename entry point AsBidirectional to AsBiDirectional v4.24.0 ====== * Migration from `Newtonsoft.Json` to `System.Text.Json` package (#14292) * Add CDP for Chrome 128 and remove 125 v4.23.0 ====== * Log http requests/responses via internal DiagnosticsHttpHandler (#13978) * Kick off sending of request and log it in parallel * Return back protected synchronous Execute method in WebDriver * Fixed calling quit after not successful new session (#14242) * Add CDP for Chrome 12 and remove 124 v4.22.0 ====== * Have url property setter call navigation method instead of the other way around (#13960) * Add asynchronous methods to Navigation class (#14051) * Add preference to enable CDP in Firefox by default (#14091) * Add CDP for Chrome 126 and remove 123 v4.21.0 ====== * Add CDP for Chrome 125 and remove 122 * Overwrite internal log file if it already exists (#13900) * Align binary location property for FirefoxOptions with other options (#13901) v4.20.0 ====== * Add CDP for Chrome 124 and remove 121 * Use correct devtools session id after reinitialization (#13768) * Making Selenium Manager a thin wrapper (#13833) * This change has been made to make it easier to maintain and improve, the interface has changed and if users were invoking it, they might experience issues. Selenium Manager is still in beta and these type of changes are expected. * Nightly dotnet builds are now pushed to GitHub packages v4.19.0 ====== * Add CDP for Chrome 123 and remove 120 * Correct `ChromiumDriverService.AllowedIPAddresses` property name (#13626) * Fixed parsing of the year in ConsoleApiCalledEventArgs cdp event args (Fixes #13654) * Add dispose on constructor failure to ensure driver closes (#13673) * Rename assembly prerequisites to AssemblyFixture * Support setting timeouts in capabilities (#13698) * Treat unsuccessful http responses as errored commands (#13608) * Enable internal logging at trace level for unit tests (#13727) v4.18.1 ====== * Add CDP for Chrome 122 and remove 119 v4.18.0 ====== * update parameter name to allowedIpAddresses and make whitelistedIpAddresses obsolete * remove download url parameter from driver service constructor * mark UseVerboseLogging obsolete for Edge service in favor of EnableVerboseLogging * explicitly support passing the full path to driver in Service constructor * Fix protocol cdp version for remote webdriver (#13507) * Move initialization of error codes to static ctor * Add DetachedShadowRoot exception for error response handling * Add InsecureCertificate exception for error response handling * Fix network response data encoding (#13576) * Breaking change: `desiredCapabilities` was renamed to `capabilities` in RemoteWebDriver ctor v4.17.0 ====== * Add csharp to Selenium Manager input for tracking (see #13288) * Consider log handlers as null when not initiated * Lazy initialization of log handlers when required * Specify the dll as nuget content explicitly (#13332) * Extract downloadable zip file in memory (#13277) * Update references from desiredCapabilities to capabilities * Don't output to user's console, rather use logging (Fixes #13410) * Add function to enable halting targets until runtime.runIfWaitingForDebugger is invoked (#13330) * Properly get selenium manager from bazel output (#13452) * Remove deprecated DriverService constructors with options parameter * Remove deprecated methods for toggling legacy protocol * Remove deprecated class RemoteWebElement * Improve logging performance when it is disabled (#13464) * Add CDP for Chrome 121 and remove 118 v4.16.2 ====== * Allow output ofinternal log messages to file (#13249) * Change a list of downloadable files to IReadOnlyList (#13265) * Change date format for file log * Improve file logging code smell (#13249) v4.16.1 ====== * Fix nuget target framework (#13253) v4.16.0 ====== * Update rules_dotnet (#13117) * Fix WSS scheme determination for DevTools connection (#13131) * Remove System.Drawing.Common as package dependency (#12781) * Add Runfiles support to bazel * Added TargetAttached datastructure to DevTools Target (#13175) * Allow overriding default Actions duration (#13229) * Add internal logging (#13140) * Add Chrome 120 and remove 117 v4.15.0 ====== * Do not set binary as empty string (#12738) * Store the mutated element for the user not just the target id (#12948) * Do not pack Selenium Manager binaries by consumer packages * Fix driver service path determination when starting it directly * Improve nuget packages metadata (#12873) * Add CDP files for v119 and remove v116 * Implement file downloads (#12979) v4.14.1 ====== * Fix add CDP files for v118 and remove v115 v4.14.0 ====== * Add CDP files for v118 and remove v115 * Normalize selenium manager path (#12823) * Remove IdentityModel nuget from bazel workspace (#12834) * Update `rules_dotnet` to the latest version (#12784) * Rename strong assembly name (#12861) * Fix ci dotnet build on github actions (#12863) * Deprecate saving screenshots with different image formats (#12878) * Remove tools folder not related to selenium (#12899) v4.13.1 ====== * Fix bug in selenium manager paths to work on mac and linux * Don't break devtools processing events thread in case of unexpected exception (#12820) v4.13.0 ====== * Add CDP files for v117 and remove v114 * Stabilize cdp network monitoring via increasing default timeout (#12701) * Configure await false to all awaitable invocations (#12664) * Update cdp default command timeout in inline docs (#12707) * Indicate end of output taken from selenium manager (#12744) * Declare selenium manager binaries as content (#12711) * Add browsing context methods for reload, screenshot and prompt * Allow user to start service before creating driver (#12816) * Remove Microsoft.IdentityModel.Tokens as dependency (#12777) v4.12.4 ====== * No code changes; issue with 4.12.3 release v4.12.3 ====== * Fix saving png screenshot as file (#12654) * Correcting failures in CDP Network event tests * Close dev tools session safely (#12660) * Send data over cdp consecutively (#12666) * Show output from selenium manager error stream (#12677) * Return Task instead of wait it in generated CDP method invocations (#12672) * Invoke console log api called event many times depending on count of args (#12669) * Allow users to set Selenium Manager path by environment variable (#12752) v4.12.2 ====== * No code changes; issue with 4.12.1 release v4.12.1 ====== * Only target Netstandard 2.0 for release * Fix bug for disposal of ClientWebSocket v4.12.0 ====== * Add CDP files for v116 and remove v113 * Fix bug with driver location parsing as a file when no trailing slash (#12473) * Improve performance in DriverFactory (#12497) * Avoid async void events in CDP Network session (#12486) * Rename methods in Actions class to follow .NET convention (#12439) * Fix bug with Selenium Manager executing in new window (#12593) * Simplify to only target .NET Standard 2.0 (#12608) * DriverFinder executed in Driver constructor not Service constructor (#12534) * Refactor WebScocket communication for BiDi (#12614) * Avoid potential deadlocks for new dev tools sessions (#12592) * Send data over cdp consecutively (#12591) v4.11.0 ====== * Add CDP files for v115 and remove v112 * Improving .NET API docs * Implementation of event wrapped shadow root element (#12073) * Include generation of support project (#12193) * Make WebDriver.csproj file more friendly with native pack command (#12235) * Adding ignore process match for IE Mode across bindings (#12279) * netcoreapp3.1 is deprecated * Allow setting a different pointer, keyboard, or wheel on input device (#11513) * Add move to location method to Actions (#11509) * Add support for Safari Technology Preview (#12342) * Use Selenium Manager to locate drivers on PATH (#12344) * Allow running tests with Edge * Add browser output from selenium manager to options (#12405) * Fix error when we send non-base64 data for fetch command (#12431) * Fix continueResponse method in CDP (#12445) v4.10.0 ====== * Add CDP files for v114 and remove v111 * Remove Selenium RC and WebDriverBackedSelenium code (#12024) * Improve compilation and publishing of Selenium Manager (#12045) * Fix version reported by HTTP user agent (#12061) * Support proxies for Selenium Manager (#12100) * Deprecate UseLegacyProtocol in SafariDriverService * Add links to documentation in error messages (#12157) * Add custom error class for driver location and improve error logic (#12157) v4.9.1 ====== * Add CDP files for v113 and remove v110 * Fallback result parsing of script execution to expected type (#11930) * Using Selenium Manager in default service creation (#11994) * Encoding process output (#11947) * Generate API documentation (#11968) v4.9.0 ====== * Add CDP files for v112 and remove v109 * Don't listen to error output stream from selenium manager to avoid messing up output (#11863) * Selenium Manager get Browser Version from Options classes * Selenium Manager use binary from Browser Options * Throw a descriptive exception if the current dev tools version is not supported (#11876) * Use ChangeType method to convert any object to boolean in WebElement properties (#11913) * Use selenium manager in tests (#11871) v4.8.2 ====== * Add CDP files for v111 and remove v108 * InvalidSelectorException now extends WebDriverException * Using json output with Selenium Manager * Include targets for projects building transitively (#11812) v4.8.1 ====== * Add CDP files for v110 and remove v107 * IJavascriptEngine implements IDisposable where available (#11594) * Updating Selenium Manager binaries for 4.8.1 release v4.8.0 ====== * Add CDP files for v109 and remove v106 * Add comment with name of large JS executions (#11038) * Extend invalid selenium manager process exit codes (#11361) v4.7.0 ====== * Adding CDP files for v108 and removing v105 * Update Service classes to only use System.Net.Http.HttpClient (#11143) * Add .NET 6 support (#11298) * Add support for Selenium Manager to work with IE Driver * Improve error handling with Selenium Manager v4.6.0 ====== * Adding CDP files for v107 and removing v104 * Initial implementation of Selenium Manager * allow select list class to work with disabled select elements again * Bundle smg into nuget package and copy binaries to users output * fix bug preventing installing addon from directory v4.5.1 ====== * Fix bug preventing automatic detection of protocol version v4.5.0 ====== * Add CDP support for v105, and remove v102 * Add CDP support for v106, and remove v103 * Update Select class to error when elements are disabled * Add support for installing unsigned add-ons in Firefox * Add return value for installing add-ons in Firefox v4.4.0 ====== * Add CDP support for v104, and remove v101 * Removed obsolete TouchActions class * Removed all methods marked obsolete from 4.0 * Updated Newtonsoft.Json to address security issue * Implemented ability to run different versions of browser and driver for Chrome * Implemented VirtualAuth support * Fixed bug with unsuccessful http requests in session start * Fixed bug checking whether driver supports DevTools * Marked UseSpecCompliantProtocol obsolete and throwing error when user sets to false v4.3.0 ====== * Added CDP support for v103, and remove v100 * Removed Element `GetProperty()` method * Removed execute Chrome command methods * Removed AddAdditionalCapability() methods from Browser Options classes * Removed IFindsBy locator interfaces * Removed HTML5 commands, interfaces and classes since not w3c supported * Removed support for moving to top left of element due to inconsistencies v4.2.0 ====== * Implement setting pointer event properties * Add CDP support for v102, and remove v99 * Add performance to LogType * Removed Opera classes * Implemented Action Wheel Input and scrolling methods * Allow RemoteWebDriver to access Selenium logs * Fix bug where Actions class did not reset sequences after calling perform * Add Pause action to Actions class v4.1.1 ====== * Add Zenkaku/Hankaku key * Allow Cookie name to be empty String when value not empty * Only add websocket-port if connectToRunningBrowser is not set * Add support for Chromium to cast desktop * Add CDP support for v99, v100, v101 and remove v94, v95, v96 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 `