Selenium 4.46 Released!
Categories:
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
SessionQueueintroduced 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
WebDriverWaitimport example in a docstring.
Ruby
- Generated the BiDi protocol layer from the shared binding-neutral schema.
- Added
ClientConfigfor HTTP client customization, and trimmed whitespace aroundNO_PROXYentries.
.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
SessionQueueintroduced 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_cddlscript 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
Vasiliy Mikhailov
Selenium Docs & Website
Ajith KV
Noritaka Kobayashi
Rahul Kant jha
Docker Selenium
Selenium Team Members
Thanks as well to all the team members who contributed to this release:
Augustin Gottlieb
Andrei Solntsev
David Burns
Boni García
Corey Goldberg
Swastik Baranwal
Diego Molina
Nikolay Borisenko
Puja Jagani
Simon Mavi Stewart
Titus Fortner
Viet Nguyen Duc
Stay tuned for updates by following SeleniumHQ on:
Happy automating!




