Selenium 4.46 Released!

Today we’re happy to announce that Selenium 4.46 has been released!

We’re excited to announce the release of Selenium 4.46 for JavaScript, Ruby, Python, .NET, Java and the Grid! 🎉

Links to all assets can be found on our downloads page.


Selenium 4.46 Released

✨ Highlights

  • Security Selenium Manager (Rust) now guards against path traversal when extracting tar/pkg archives.
  • [Java] Hardened the JSON parser for RFC 8259 compliance (rejecting unescaped control characters, fixing an EOF sentinel collision, correcting comma handling), and marked all current BiDi classes as beta ahead of further changes.
  • BiDi Continued unifying the BiDi protocol layer across bindings around a shared, binding-neutral CDDL-derived schema — now adopted by JavaScript and Ruby.
  • [Java] BiDi creation moved to RemoteWebDriver, with BiDi now enabled for Safari options and event subscriptions tracked by subscription ID.
  • [Python] Safari, Safari Technology Preview, and WebView2 now route to their own dedicated handlers.
  • [Rust] Selenium Manager fixes for Firefox binary discovery on Linux and macOS .pkg/pbzx payload support.
  • [Grid] Fixed classpath packaging for the Redis-backed SessionQueue introduced in 4.45.

📦 Notable Changes

Java

  • Hardened the JSON parser: fixed an EOF sentinel collision with U+FFFF, rejected unescaped control characters, tightened the number lexer to RFC 8259, and corrected comma handling.
  • Marked all current BiDi classes as beta, moved BiDi creation to RemoteWebDriver, and enabled BiDi for Safari options.
  • Deprecated methods that surfaced the internal BiDi connection on the driver, and now track event subscriptions by subscription ID.
  • Fixed the Docker version comparator, and system proxy handling for Selenium Manager arguments.

Python

  • Routed Safari, Safari Technology Preview, and WebView2 to their own handlers.
  • Fixed the WebDriverWait import example in a docstring.

Ruby

  • Generated the BiDi protocol layer from the shared binding-neutral schema.
  • Added ClientConfig for HTTP client customization, and trimmed whitespace around NO_PROXY entries.

.NET

  • Made product info determination thread-safe.
  • Split event-stream-backed subscription and enumeration for BiDi, and continued test infrastructure cleanup.

Grid

  • Fixed classpath packaging for the Redis-backed SessionQueue introduced in 4.45.

Build & Infra

  • Added a design decision record (ADR) process and template for documenting significant changes.
  • Added a binding-neutral BiDi schema (JavaScript) and an update_cddl script to refresh pinned w3c/webref CDDL files.
  • Bumped Rust build tooling (rules_rs, @llvm) and the Node.js toolchain.

🐳 Docker Selenium

  • Docker: Add Redis external datastore support for SessionQueue configuration (#3160)
  • Docker: Fix video.sh busy-loop when se:recordVideo=false (#3165)
  • Docker: Env var SE_VIDEO_SESSION_SUBFOLDER to standardize recording in dynamic grid (#3156)
  • See all changes

We thank all our contributors for their incredible efforts in making Selenium better with every release. ❤️

For a detailed look at all changes, check out the release notes.


Contributors

Special shout-out to everyone who helped the Selenium Team get this release out!

Selenium

Viacheslav Dermichev

Viacheslav Dermichev

Vasiliy Mikhailov

Vasiliy Mikhailov

Selenium Docs & Website

Noritaka Kobayashi

Noritaka Kobayashi

Rahul Kant jha

Rahul Kant jha

Docker Selenium

Selenium Team Members

Thanks as well to all the team members who contributed to this release:

Augustin Gottlieb

Augustin Gottlieb

Andrei Solntsev

Andrei Solntsev

David Burns

David Burns

Boni García

Boni García

Corey Goldberg

Corey Goldberg

Swastik Baranwal

Swastik Baranwal

Diego Molina

Diego Molina

Nikolay Borisenko

Nikolay Borisenko

Puja Jagani

Puja Jagani

Simon Mavi Stewart

Simon Mavi Stewart

Titus Fortner

Titus Fortner

Viet Nguyen Duc

Viet Nguyen Duc

Stay tuned for updates by following SeleniumHQ on:

Happy automating!