Selenium release notes
Selenium releases all language bindings and the Grid together, roughly once a month. This page lists the highlights of each recent release, newest first. The full announcement for every release, including contributor credits and the Docker Selenium changes, is on the blog, and the complete, line-by-line history of each binding lives in its changelog on GitHub: Java, Python, .NET, Ruby and JavaScript. Releases older than those listed here are covered by their blog posts.
Selenium 4.51
Released 9 October 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- Java no longer depends on Guava, so
ExpectedConditionno longer implements Guava’sFunctioninterface; see the migration guide if your code relied on it.RemoteWebDriver.getClientFactory()was added and the removal of the deprecatedHttpCommandExecutorfields was postponed to 4.53. - JavaScript publishes the browser atoms, now written in TypeScript, as a standalone
@selenium/atomsnpm package, and can install and uninstall web extensions through BiDi with a fallback to the classic commands. - Python added support for Python 3.15.
- BiDi code generation grew again: Java gained a BiDi code generator, JavaScript can generate vendor specific classes, and the Firefox vendor CDDL is pinned from the Firefox repository.
- Selenium Manager now degrades to empty metadata when its cache cannot be read instead of failing, and Java artifacts are signed in-process during the release.
Selenium 4.50
Released 30 September 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- Relative locators in Java and .NET can be anchored to an element or a shadow root, not only to the driver.
- The deprecated Firefox profile extension and certificate methods were removed from every binding; Java, Python and .NET now declare the Firefox default preferences in the binding itself.
- BiDi in .NET added screenshot image size, a screencast destination folder,
Emulation.SetTextLayoutModeOverrideand activity source monitoring; Ruby can install and uninstall web extensions through BiDi; Java parses each BiDi command response once. - Java removed the deprecated methods from the
HttpClientinterface and aRemoteWebDrivernow uses a singleHttpClient.Factory. - Python applies the
ClientConfiguser_agentandextra_headersper connection. - Releases are built on remote build execution and Selenium Manager can be cross-compiled for every platform from Linux or macOS.
Selenium 4.49
Released 9 September 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- .NET fixed a run of BiDi wire-format bugs (missing DTO fields, mismatched proxy, realm and
NamespaceUriJSON property names, an oversized command-descriptor allocation) and gained browsing context screencast support. - Python raises typed WebDriver errors for BiDi wire error codes and runs its BiDi suite against the Grid; JavaScript, Python and Ruby derive BiDi field names and enum value types from the shared schema.
- Grid fixed a 500 error when downloading a file whose name contains spaces.
- Java removed the deprecated
GET /session/{sessionId}/se/files/{fileName}endpoint; jars now ship with LICENSE and NOTICE files and smaller javadocs. - Selenium Manager fixed Windows architecture detection under WOW64 and added Chrome arm64-on-Linux support; every binding ships a prebuilt Linux arm64 binary.
Selenium 4.48
Released 27 August 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- The shared, binding-neutral BiDi layer got stricter: Ruby rejects invalid inbound values, .NET throws on an unknown discriminator, and JavaScript gained a serialization and domain layer plus connection-level event subscriptions.
- Ruby fixed a silent hang when receiving an oversized WebSocket frame.
- Grid no longer forwards
se:remoteUrlpast the Node that consumes it, and file upload and download now work for Kubernetes, Docker and relay sessions. - .NET added the
SetMediaFeaturesOverrideBiDi command to the Emulation module. - Python fixed W3C capabilities built from a list of options (
create_matches); JavaScript normalizes empty custom locator results and no longer exposes BiDi onDriver.
Selenium 4.47
Released 10 August 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- Ruby now generates its BiDi domain type accessors, union variant factories and typed errors from the shared CDDL-derived schema, as JavaScript already did, and supports BiDi on Safari Preview.
- Firefox blocks CDP access in .NET, Python and Ruby, reinforcing BiDi as the cross-browser protocol.
- Java fixed BiDi not initializing for a
RemoteWebDriverbuilt via the builder, and fixedBy.className()/By.id()misescaping non-ASCII leading digits and aBy.name()bug on names containing%. - .NET BiDi transport factories are composable, the optional command timeout was removed from
command options, and
SE_*DRIVERenvironment variables can set driver locations. - Dynamic Grid videos are stored in a per-session subfolder via
SE_VIDEO_SESSION_SUBFOLDER, including on Kubernetes. - Selenium Manager honours
--browser-versionfor Electron, finds Chrome and Edge in known install directories, and no longer caches an empty driver version.
Selenium 4.46
Released 11 July 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- Security: Selenium Manager guards against path traversal when extracting tar and pkg archives.
- Java hardened its JSON parser for RFC 8259 compliance and marked all current BiDi classes
as beta ahead of further changes; BiDi creation moved to
RemoteWebDriver, BiDi is enabled for Safari options, and event subscriptions are tracked by subscription ID. - The shared binding-neutral BiDi schema is now adopted by JavaScript and Ruby; Ruby also
gained
ClientConfigfor HTTP client customization. - Python routes Safari, Safari Technology Preview and WebView2 to their own handlers.
- Selenium Manager fixed Firefox binary discovery on Linux and supports macOS
.pkg/pbzx payloads; Grid fixed classpath packaging for the Redis-backedSessionQueuefrom 4.45.
Selenium 4.45
Released 16 June 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- Java can drive Electron apps through
ElectronOptionsandElectronDriver, and publishes aselenium-devtools-latestartifact. - The shared atoms (
isDisplayed,getAttribute,find-elements) continued moving from Closure to TypeScript and are used by JavaScript, Ruby, Java and .NET. - Grid hardened its WebSocket proxy (pre-handshake race, TCP backpressure, fast-path framing)
and added Redis-backed
SessionQueuesupport next to the bundled RedisSessionMap. - Python gained high-level BiDi network APIs for request, response and authentication handling plus extra headers, and aligned its BiDi script module with the cross-binding design. A request handler looks like this:
request.fail()
driver.network.add_request_handler(["**/blank.html"], block_request)
- Ruby deprecated the
curbHTTP client and theChromium Profileclasses, and split responsibilities betweenService,DriverFinderandOptions. - Selenium Manager prunes cache entries older than 30 days and switched its TLS backend to
ring; Bazel moved to 9.1 and the release pipeline is rerun-safe.
Selenium 4.44
Released 12 May 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- A new Selenium CLI tool, an AI-assisted contribution policy, and Rust commands to install
skills.md/rules.mdfiles for agent-based contributors. - .NET statically declares BiDi commands and events and streams additional events, with
breaking changes: obsolete members were removed and
UnhandledPromptBehavioraccepts a string or a map. - Java continued JSpecify nullability work in the
remotepackage, deprecated the nativeHttpClientmethods, and fixed aNoSuchElementExceptionregression for customBylocators. - Grid added a Redis-backed Distributor as a built-in option and fixed latent WebSocket proxy bugs.
- Python generates its BiDi files instead of hand-curating them and added a CDDL 2 generator;
JavaScript converted the
getAttributeandisDisplayedatoms to TypeScript.
Selenium 4.43
Released 10 April 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
A quick follow-up to 4.42 that fixes one Grid regression.
- Grid: a mobile slot’s stereotype
browserNameno longer leaks into merged session capabilities when an app-related capability is present.
Selenium 4.42
Released 9 April 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- .NET made a large BiDi consistency pass: unified
*EventArgstypes, BiDi exposed through interfaces, thread-safe event registration, close to zero allocation per command or event, and anyWebDrivercan be disposed asynchronously. - Java implemented the BiDi
speculationmodule, extended JSpecify nullability coverage, and fixed severalKeysandScriptKeycorrectness issues. - Grid hardened the WebSocket router with a transparent TCP tunnel bypass path, handling for
dropped close frames and idle disconnects, and a
NodeCommandInterceptorfor pluggable command interception via--ext. - Python expanded BiDi test coverage and added type stubs for lazily imported classes.
- JavaScript gained a
Colorclass; the build moved to Bazel 9.
Selenium 4.41
Released 20 February 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- .NET expanded the BiDi Emulation module (
SetTouchOverride,SetNetworkConditions, a widerSetViewport), added aSpeculationmodule, and dispatches commands asynchronously; as a breaking change, Selenium Manager and the driver service start and stop asynchronously. - Java continued JSpecify nullability coverage across the BiDi packages and fixed JSON parsing of numbers with an exponent.
- Grid fixed a Distributor deadlock, WebSocket connection counter leaks and thread exhaustion in health checks, and added Kubernetes cluster and basic-auth support for Dynamic Grid.
- Python added the BiDi
set_screen_settings_overrideemulation command and enabled Edge BiDi tests. - Ruby outputs driver logs by default when debug is enabled and no longer stores generated atoms in the repository.
- The legacy Rake/CrazyFun build system was retired after a sweeping release and CI overhaul.
Selenium 4.40
Released 18 January 2026. Announcement · GitHub release · Changelogs: Java, Python, .NET, Ruby, JavaScript
- Chrome DevTools support covers versions 144, 143 and 142.
- Java expanded BiDi with
setScreenOrientationOverrideandsetNetworkConditions, and deprecated its unused logging and Guava collection classes. - Python introduced the
LocalWebDriverbase class and removed the deprecatedFirefoxBinaryand FTP proxy support. - .NET added
SetScreenSettingsOverrideAsyncandFileDialogOpened, exposed the input module, and reuses buffers in BiDi communication. - Grid improved Dynamic Grid container naming and labels, concurrent session handling, and fixed race conditions.



