# Selenium changelog > Browser automation for testing web applications. - Vendor: Selenium project - Category: Developer Tools - Official site: https://www.selenium.dev - Tracked by: What's New (https://whatsnew.fyi/product/selenium) - Harvested from: GitHub (SeleniumHQ/selenium) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### nightly — Nightly - Date: 2026-08-06 - Version: nightly - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/nightly - Permalink: https://whatsnew.fyi/product/selenium/releases/nightly - Labels: Pre-release; nightly - **deprecated** — Deprecate invalid Firefox profile code in dotnet, java, js, and rb - **changed** — Dynamic K8s video always use the per-session subfolder and remove pod-wait plus relocation - **fixed** — Prevent empty driver version from being cached in metadata in rust - **added** — Support SE_*DRIVER environment variables to set driver locations in dotnet - **changed** — Make BiDi transport factories composable in dotnet ##### Commits - 88e2d0c: [js] Wait for async BiDi events and window resize in flaky tests (#17874) (Titus Fortner) [#17874](https://github.com/SeleniumHQ/selenium/pull/17874) - 05a002e: [dotnet] fix flaky cancellation test to accept OperationCanceledException subclasses (Titus Fortner) - 960abd2: [dotnet][java][js][rb] deprecate invalid Firefox profile code (#17871) (Titus Fortner) [#17871](https://github.com/SeleniumHQ/selenium/pull/17871) - a25afbb: [build] Automated Browser Version Update with CDP (#17873) (Selenium CI Bot) [#17873](https://github.com/SeleniumHQ/selenium/pull/17873) - 4376465: [build] patch rules_ruby to emit Windows batch launchers with CRLF (Titus Fortner) - 4efbdf0: [grid] Dynamic K8s video always use the per-session subfolder; remove pod-wait + relocation (#17876) (Viet Nguyen Duc) [#17876](https://github.com/SeleniumHQ/selenium/pull/17876) - b9d61b7: [rust] Prevent empty driver version from being cached in metadata (#17757) (Mathias Paulenko Echeverz) [#17757](https://github.com/SeleniumHQ/selenium/pull/17757) - 62b6294: [dotnet] support SE_*DRIVER environment variables to set driver locations (#17875) (Titus Fortner) [#17875](https://github.com/SeleniumHQ/selenium/pull/17875) - 4f1e333: [dotnet] [bidi] Make BiDi transport factories composable (#17877) (Nikolay Borisenko) [#17877](https://github.com/SeleniumHQ/selenium/pull/17877) ### selenium-4.46.0 — Selenium 4.46.0 - Date: 2026-07-11 - Version: selenium-4.46.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.46.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.46.0 - **changed** — Make Either.stream() and iterator() empty for a left value - **fixed** — Trim whitespace around NO_PROXY entries in Ruby - **fixed** — Treat prefix literally in UrlTemplate.match(url, prefix) - **changed** — Show browser version and available CDP versions in Java - **fixed** — Handle system proxy setting for arguments passed to selenium manager in Java - **added** — Add binding-neutral BiDi schema with cddl2ts-gated fidelity in JavaScript - **added** — Add ClientConfig for HTTP client customization in Ruby - **changed** — Split event stream backed subscription and enumeration in DotNet BiDi - **changed** — Move Urls knowledge to testing web server in DotNet tests - **fixed** — Fix comparator of Docker versions in Java - **changed** — Route Safari, STP and WebView2 to their handlers in Python - **fixed** — Fix classpath packaging Redis-backed for SessionQueue in Grid - **fixed** — Do not ignore browser path when version is specified in Rust selenium-manager - **changed** — Allow constructor args to be used when coercing from JSON - **fixed** — Fix JSON parser EOF sentinel collision with U+FFFF in Java - **fixed** — Reject unescaped control characters in JSON strings in Java - **changed** — Support multiple names for Firefox binary in Linux in Rust - **fixed** — Tighten JSON number lexer to match RFC 8259 in Java - **changed** — Enforce commas between JSON elements and accept trailing commas in Java - **deprecated** — Deprecate methods to avoid internal BiDi connection surfacing on driver in Java ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed * [build] Upgrade rules_rs to 0.0.90 and build Rust against @llvm on macOS by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17683 * [dotnet] Thread safe product info determination by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17684 * [release] Skip release if package is already published by @diemol in https://github.com/SeleniumHQ/selenium/pull/17686 * [docs] add design decision record process and template by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17665 * [rust] Support pbzx-compressed macOS .pkg payloads by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17691 * [java] Mark all current BiDi related classes beta by @pujagani in https://github.com/SeleniumHQ/selenium/pull/17690 * [build] Upgrade rules_rs to 0.0.92 by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17688 * [ci] Ignore changes in docs/decisions directory for pull requests by @diemol in https://github.com/SeleniumHQ/selenium/pull/17693 * [build] Upgrade @llvm to 0.8.9 by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17703 * [rust] Use PKG again for Firefox macOS downloads by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17702 * [rb] trim whitespace around NO_PROXY entries by @aguspe in https://github.com/SeleniumHQ/selenium/pull/17565 * Treat prefix literally in UrlTemplate.match(url, prefix) by @vasiliy-mikhailov in https://github.com/SeleniumHQ/selenium/pull/17713 * [java] show browser version and available CDP versions by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17708 * Make Either.stream() and iterator() empty for a left value by @vasiliy-mikhailov in https://github.com/SeleniumHQ/selenium/pull/17714 * [java] Handle system proxy setting for arguments passed to selenium manager by @bhecquet in https://github.com/SeleniumHQ/selenium/pull/17402 * [js] Add binding-neutral BiDi schema with cddl2ts-gated fidelity by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17700 * [build] add copyright headers to rbs, pyi, ts, mjs, and erb files by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17720 * [rb] add ClientConfig for HTTP client customization by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17699 * [rb] Add copyright header for client_config.rbs by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17722 * [dotnet] [bidi] Split event stream backed subscription and enumeration by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17705 * [dotnet] [test] Moves Urls knowledge to testing web server by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17724 * [java] fix comparator of Docker versions by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17723 * [dotnet] [test] Driver is protect _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.46.0]_ ### selenium-4.45.0 — Selenium 4.45.0 - Date: 2026-06-16 - Version: selenium-4.45.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.45.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.45.0 - **removed** — Remove deprecated logging classes from Java - **fixed** — Close pre-handshake race in WebSocket proxy for Grid - **fixed** — Correct handling for older browsers and missing casing in JavaScript - **deprecated** — Deprecate curb HTTP client support in Ruby - **changed** — Migrate find-elements atom from Closure to TypeScript in JavaScript - **security** — Update vulnerable JavaScript dependency with a range - **fixed** — Fix template caching in DotNet - **changed** — Update System.Text.Json to 8.0.6 in DotNet - **changed** — Include snupkg files when packaging and allow the use of SourceLink in DotNet - **changed** — Run format against slnx instead of looping csproj in DotNet - **fixed** — Fix remote linkage in SourceLink for DotNet - **changed** — Support deterministic build output in DotNet - **changed** — Remove npm dependency and use Bazel for everything in JavaScript ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed * [build] derive PR diff base from HEAD^1 instead of trunk tip by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17438 * [build] setup trusted publishing from Github to npmrc by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17445 * [build] generate release notes from previous minor release tag by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17449 * [build] fix when to update lock files during the release process by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17450 * [java] remove deprecated logging classes by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17453 * [grid] Close pre-handshake race in WebSocket proxy by @shs96c in https://github.com/SeleniumHQ/selenium/pull/17435 * [JavaScript] Correct handling for older browsers and missing casing by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17451 * Use pyproject for Python runtime deps lock input by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17452 * [rb] deprecate curb http client support by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17443 * [javascript] Migrate find-elements atom from Closure to TypeScript by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17458 * [py] replace rules_python sphinxdocs with local sphinx_docs rule by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17461 * [build] Configure Renovate dashboard approval by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17464 * [js] update vulnerable dependency with a range by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17466 * [build] remove duplicated grid ui tests by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17468 * [build] update java graphpql dependency by filtering out bad reference by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17469 * [rb] upgrade to steep 2.0 by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17470 * [rust] update dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17472 * [build] update GitHub Actions to latest major versions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17475 * [dotnet] update dev dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17474 * [dotnet] fix template caching by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17476 * [dotnet] update system.text.json to 8.0.6 by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17477 * [js] update dev dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17479 * [dotnet] upgrade paket from v9 to v10 by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17481 * [build] bump baze _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.45.0]_ ### selenium-4.44.0 — Selenium 4.44.0 - Date: 2026-05-12 - Version: selenium-4.44.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.44.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.44.0 - **fixed** — Retrieve devtools version dynamically for Ruby package verification - **changed** — Do not truncate internal log messages at error/warn levels in dotnet - **fixed** — Safe modifications of internal log handlers in dotnet - **removed** — Remove planned obsoleted members for 4.44 in dotnet - **changed** — Statically declare commands in dotnet bidi - **changed** — Statically declare events in dotnet bidi - **added** — Add C# 14 extension to polyfill ArgumentNullException.ThrowIfNull in dotnet - **changed** — Align SetDownloadBehavior command in dotnet bidi - **changed** — Align ContinueWithAuth command in dotnet bidi - **changed** — Align SetGeolocation polymorphic command in dotnet bidi - **deprecated** — Deprecate the native methods inside the HttpClient interface in Java - **added** — Add CDDL 2 Python generator - **fixed** — Accept legacy session-closed event payloads in grid - **fixed** — Fix NoSuchElementException for custom By locators in Java - **fixed** — Fix NPE when response status is null - **fixed** — Fix stopping of network monitoring via DevTools in dotnet - **added** — Initial creation of the Selenium CLI Tool - **changed** — Use generated Bidi files instead of hand curated ones in Python - **removed** — Remove field ChromiumDriver.capabilities in Java - **deprecated** — Obsolete Type(string) method in Input module in dotnet bidi ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release * fix(documentation): update artifact naming for generated docs by @diemol in https://github.com/SeleniumHQ/selenium/pull/17332 * fix(ruby): retrieve devtools version dynamically for package verification by @diemol in https://github.com/SeleniumHQ/selenium/pull/17335 * [dotnet] Don't truncate internal log messages at error/warn levels by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17333 * [dotnet] Safe modifications of internal log handlers by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17334 * [dotnet] Remove planned obsoleted members for 4.44 by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17328 * [dotnet] [bidi] Statically declare commands by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17330 * [dotnet] [bidi] Statically declared events by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17331 * [dotnet] Add C# 14 extension to polyfill `ArgumentNullException.ThrowIfNull` by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16697 * [dotnet] [bidi] Align SetDownloadBehavior command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17336 * [dotnet] [bidi] Align ContinueWithAuth command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17337 * [dotnet] [bidi] Align SetGeolocation polymorphic command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17338 * [dotnet] [test] In-process test webserver by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17339 * [java] deprecate the 'native' methods inside the HttpClient interface by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/17340 * CDDL 2 Python generator by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/16914 * Fix py:local_dev rake task by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17342 * [grid] Accept legacy session-closed event payloads by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17343 * [java] specify nullability in package `org.openqa.selenium.remote` by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17325 * fix NPE when response status is null by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17348 * [java] fix NoSuchElementException for custom By locators by @Chandan25sharma in https://github.com/SeleniumHQ/selenium/pull/17287 * [py] Update docs with pytest example and minor formatting fixes by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17351 * [dotnet] Fix stopping of network monitoring via DevTools by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17352 * [dotnet] [test] Update tests to target .NET 10 by @nvborisenko in https: _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.44.0]_ ### selenium-4.43.0 — Selenium 4.43.0 - Date: 2026-04-10 - Version: selenium-4.43.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.43.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.43.0 ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
**Full Changelog**: https://github.com/SeleniumHQ/selenium/compare/selenium-4.42.0...selenium-4.43.0 ### selenium-4.42.0 — Selenium 4.42.0 - Date: 2026-04-09 - Version: selenium-4.42.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.42.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.42.0 - **added** — Color Class for Javascript library - **added** — BiDi speculation module for Java - **changed** — Python execute_script and execute_async_script now have return type annotations - **changed** — DotNet BiDi event arguments unified to use EventArgs naming - **changed** — DotNet BiDi functionality exposed via interface - **changed** — DotNet WebDriver can be disposed asynchronously - **changed** — DotNet BiDi RemoteValue converted to well-known types - **changed** — DotNet BiDi BrowsingContext and UserContext cached per session - **changed** — DotNet BiDi RemoteValue converted to IDictionary - **changed** — Java PrintOptions and similar classes now use fluent setters - **changed** — Java Keys enforces CharSequence contract in charAt() - **changed** — Grid Router bypass WebSocket data path via transparent TCP tunnel - **changed** — Ruby now uses portable Ruby - **changed** — Python __enter__ in remote.WebDriver uses Self as return type - **fixed** — DotNet BiDi unregister cancelled commands - **fixed** — DotNet BiDi properly handle websocket close handshake - **fixed** — Java fix or condition - **fixed** — Java RemoteWebDriver.builder() no longer serializes binary stream - **fixed** — Java Platform.extractFromSysProperty guarded against NPE - **deprecated** — Java FN key deprecated in favor of OPTION as alias of ALT ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release * [rust][rb] Update lock files with new versions by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17118 * [dotnet] [bidi] Unify all event arguments to be *EventArgs by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17125 * [py] Add return type annotation to execute_script and execute_async_script by @adamtheturtle in https://github.com/SeleniumHQ/selenium/pull/17117 * [dotnet] [bidi] Expose functionality via interface by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17127 * [dotnet] [bidi] Unregister cancelled commands by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17129 * [dotnet] [bidi] Properly handle websocket close handshake by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17132 * [ruby] fix linter error in `./go authors` script by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17136 * [nodejs] Color Class for Javascript library by @BckupMuthu in https://github.com/SeleniumHQ/selenium/pull/16944 * [java] fix "or" condition by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17135 * [java] Improve screenshot error message by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17120 * [java] fix "Don't serialize binary stream - it might be large" when using `RemoteWebDriver.builder()` by @tim-burke-systemware in https://github.com/SeleniumHQ/selenium/pull/17139 * [dotnet] [bidi] Wait until events are dispatched when unsubscribing by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17142 * [dotnet] Any WebDriver can be disposed asynchronously by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17119 * [grid] Router bypass WebSocket data path via transparent TCP tunnel by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17146 * [dotnet] [bidi] Preserve configurable options pattern by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17144 * [rb] Use portable Ruby by @p0deje in https://github.com/SeleniumHQ/selenium/pull/16936 * [java] Guard against NPE in Platform.extractFromSysProperty by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17151 * [java] Deduplicate Unicode PUA mappings in Keys; make OPTION an alias of ALT and deprecate FN by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17147 * [java] remove `@Nullable` from return value for `ExpectedConditions` that never return null by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17149 * [java] Fluent setters in few classes like `PrintOptions` etc. by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17148 * [dotnet] [bidi] Add disposed guard by @nvborisenko in https://githu _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.42.0]_ ### selenium-4.41.0 — Selenium 4.41.0 - Date: 2026-02-20 - Version: selenium-4.41.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.41.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.41.0 - **removed** — Remove type stub packages from runtime dependencies in Python - **added** — Canonical approach to supporting AI agent directions - **fixed** — Improve error message for died grid in Java - **fixed** — Fix return type hint for alert_is_present in Python - **fixed** — Fix JSON parsing of numbers with exponent in Java - **changed** — Simplify context aware command options for dotnet BiDi - **changed** — Integrate mypy type checking with Bazel for Python - **changed** — Make Bazel test target names consistent with other languages in Python - **changed** — Replace hardcoded bazel-selenium references with dynamic path resolution - **changed** — Refactor BiDi module initialization to pass BiDi explicitly in dotnet ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release * [py] Remove type stub packages from runtime dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16945 * Canonical approach to supporting AI agent directions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16735 * [build] Pre-release workflow improvements by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16946 * [build] Prevent nightly releases during release window by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16948 * [build] Fix Bazel NuGet push implementation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16950 * [build] Release workflow improvements by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16947 * [build] Fix Bazel JSDocs implementation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16949 * [build] Create config files from environment variables for publishing by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16951 * [js] create task to update dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16942 * [build] Java release improvements and build verification tasks by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16952 * [py] integrate mypy type checking with Bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16958 * [build] Migrate workflows to use centralized bazel.yml by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16955 * [dotnet] [bidi] Simplify context aware command options by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16954 * [build] simplify release.yml: remove draft, build once during publish by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16960 * [dotnet] [bidi] AOT safe json converter for `Input.Origin` class by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16962 * [dotnet] [bidi] AOT safe json converter for `OptionalConverter` by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16963 * [dotnet] [bidi] Null guard for event handlers by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16967 * [java] Improve error message for died grid by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16938 * [build] combine pre-release dependency updates by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16973 * [rb] remove stored atoms these get generated by build by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16971 * [dotnet] [bidi] Unignore some internal tests by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16968 * [build] run ruff on python files outside py directory by @titusfortner in https://github.com/SeleniumHQ/se _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.41.0]_ ### selenium-4.40.0 — Selenium 4.40.0 - Date: 2026-01-18 - Version: selenium-4.40.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.40.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.40.0 - **changed** — Change BiDi emulation commands return type to void in Java - **added** — Support SetScreenSettingsOverrideAsync method in DotNet Emulation module - **added** — Implement emulation.setScreenOrientationOverride in Java BiDi - **added** — Create user-friendly method for enabling BiDi in Ruby - **added** — Add LocalWebDriver base class in Python - **changed** — Add synchronization and error handling for socket interactions in Ruby - **changed** — Mark low level BiDi implementation as private API in Ruby - **changed** — Ensure driver process is always stopped in Ruby - **added** — Add missing Script.RemoteReference LocalValue type in DotNet BiDi - **fixed** — Fix nullability warnings in DotNet WebDriver - **removed** — Remove deprecated FTP proxy support in Python - **fixed** — Fix bug in FileHandler that always failed on macOS - **added** — Add force encoding to remove warnings caused by json 3.0 in Ruby - **changed** — Pin Browsers in Bazel by default - **changed** — Build Selenium Manager for tests ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release * [dotnet] Modernize `EnvironmentManager`, standardize assembly teardown by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15551 * [java] Refactor tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16684 * [ci]: bump cargo lockfile by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16698 * [java][BiDi] change emulation commands return type to void by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16699 * [java] simplify strings processing by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/15309 * Fix few more flaky ruby tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16695 * [bazel] Switch to custom `closure_js_deps` rule by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16571 * [dotnet] [bidi] Support SetScreenSettingsOverrideAsync method in Emulation module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16704 * [dotnet] Modernize code patterns in test suites by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16701 * use proper AssertJ asserts that generate a useful error message by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16707 * fix Java language level in IDEA by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16708 * [py] Properly verify Selenium Manager exists by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16711 * fix flaky Ruby test `element_spec.rb` by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16709 * [java][BiDi] implement `emulation.setScreenOrientationOverride` by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16705 * [rb] add synchronization and error handling for socket interactions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16487 * [rb] mark low level bidi implementation as private api by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16475 * [rb] ensure driver process is always stopped by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/15635 * [rb] create user-friendly method for enabling bidi by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/14284 * [dotnet] [bidi] Added missing Script.RemoteReference LocaclValue type by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16717 * [dotnet] Standardize `IEquatable` implementations across types overriding Equals by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16665 * [dotnet] Fix nullability warnings in `WebDriver` by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16662 * [py] Don't compare object identity in conftest by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16723 * #16720 avoid failing becau _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.40.0]_ ### selenium-4.39.0 — Selenium 4.39.0 - Date: 2025-12-06 - Version: selenium-4.39.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.39.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.39.0 - **fixed** — Text node children are now always considered as displayed in atoms - **changed** — Grid UI enhanced with theme integration and improved status indicators - **added** — Python BiDi emulation command set_locale_override - **added** — Python BiDi emulation command set_scripting_enabled - **changed** — Python docstrings updated to Google pydoc format - **added** — Java BiDi browsingContext.downloadEnd event implementation - **added** — Python BiDi emulation command set_screen_orientation_override - **added** — Python BiDi emulation command set_download_behavior - **added** — Java BiDi emulation.setTimezoneOverride command implementation - **changed** — Grid minimum Docker API requirement updated to 1.44 for Docker Engine v29+ - **added** — Python BiDi emulation command set_user_agent_override - **changed** — DotNet BiDi communications namespace simplified - **changed** — DotNet atoms now generated statically - **changed** — Node.js dev dependencies updated to fix vulnerabilities - **changed** — Java BiDi GeolocationOverride now allows passing null - **changed** — rules_rust moved to bzlmod in Bazel - **changed** — rules_dotnet upgraded to 0.20.5 ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release * [atoms] fix text node children are always considered as displayed #16284 by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/16329 * [grid] Enhance UI with theme integration and improved status indicators by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/16512 * [py][bidi]: add emulation command - `set_locale_override` by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16504 * [py][bidi]: add emulation command `set_scripting_enabled` by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16513 * [py] Update docstrings to google pydoc format by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16511 * [java][BiDi] implement `browsingContext.downloadEnd` event by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16347 * Fix typo and minor formatting changes in README.md by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16523 * [py] Update docstrings (remove reST leftovers and resolve D200) by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16525 * [py] Fix docstring formatting and apply ruff linting rules by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16527 * [py] Fix Ruff D417 warnings in docstrings by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16535 * [py] Fix ruff D415 warnings in docstrings by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16536 * [py][bidi]: add `set_screen_orientation_override` command in Emulation by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16522 * [py] Fix D205 ruff warnings for docstrings and add type hints by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16537 * [py][bidi]: add `set_download_behavior` command by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16556 * [py] Bump pytest and dev dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16572 * [bazel] Move `rules_rust` to `bzlmod` by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16566 * [ci] Make a PR for updating mirror file instead of pushing directly to trunk by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16579 * [ci] Update mirror info (2025-11-11T15:26:46Z) by @github-actions[bot] in https://github.com/SeleniumHQ/selenium/pull/16578 * [ci] Revert latest changes related to the mirror workflow by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16580 * [java]: refactor request interception tests and handle CORS by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16585 * [py][bidi]: enable download event tests for firefox by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16587 * [py] Fix more type annotations by @iampopovich in https://github.com/Sele _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.39.0]_ ### selenium-4.38.0 — Selenium 4.38.0 - Date: 2025-10-25 - Version: selenium-4.38.0 - Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.38.0 - Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.38.0 ##### Detailed Changelogs by Component **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release * [dotnet] [bidi] Avoid using JsonInclude attribute to include optional property for DTO by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16413 * [rb] Bump prism to 1.6.0 by @Earlopain in https://github.com/SeleniumHQ/selenium/pull/16450 * [java] JSpecify annotations for `ExecuteMethod` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16464 * [rb] Fix Network issue by removing nil values on network requests by @aguspe in https://github.com/SeleniumHQ/selenium/pull/16442 * [py] Replaced :param: and :args: from docstrings by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16469 * [java] JSpecify annotations for `org.openqa.selenium.federatedcredent… by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16461 * [java] JSpecify annotations for `org.openqa.selenium.interactions` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16462 * [java][rb] Remove cruft from old Travis CI environment by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16473 * [java] JSpecify annotations for `org.openqa.selenium.net` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16463 * [rb] remove deprecated classes for previous implementation of log han… by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16474 * [build] minimize number of ruby targets run with bidi by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16477 * [java] JSpecify annotations for `Credential` and `MBean` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16481 * [java] JSpecify annotations for `ScriptKey` and `UnpinnedScriptKey` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16483 * [java] JSpecify annotations for `FileDetector` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16482 * [java] JSpecify annotations for `ExpectedCondition` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16489 * [java] JSpecify annotations for `Response` `SessionId` `HttpSessionId` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16490 * [rb][build] improve ruby local_dev generation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16495 * [build] removing test_tag_filter tag that isn't being used anywhere by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16496 * [rb][build] disable dev shm for Chrome and Edge on RBE by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16497 * [rb] update syntax with rspec linter by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16498 * [java][bidi]: add test for `onHistoryUpdated` event by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16293 * [py] Bump version of ruff formatter/linter by @cgoldberg in https://git _[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.38.0]_