Selenium 4.50 Released!
Categories:
We’re excited to announce the release of Selenium 4.50 for JavaScript, Ruby, Python, .NET, Java and the Grid! 🎉
Links to all assets can be found on our downloads page.
Selenium 4.50 Released
✨ Highlights
- Relative locators in Java and .NET can now be anchored to elements and shadow roots, not just the driver.
- Firefox deprecated profile extension and certificate methods were removed from every binding, and Java, Python, and .NET now declare Firefox default preferences in the binding itself.
- BiDi .NET added screenshot image size, a screencast destination folder,
Emulation.SetTextLayoutModeOverride, and activity source monitoring; Ruby can now install and uninstall web extensions through BiDi; Java parses each BiDi command response only once. - [Java] Removed deprecated methods from the
HttpClientinterface, and aRemoteWebDrivernow uses a singleHttpClient.Factory. - [Python]
ClientConfiguser_agentandextra_headersare now applied per connection. - [Build & Infra] Releases are now built on RBE, Selenium Manager can be cross-compiled for all platforms from Linux or Mac, and the BiDi schema is generated from more upstream sources, including Mozilla’s Firefox CDDL.
📦 Notable Changes
Java
- Supported relative locators from elements and shadow roots (shared with .NET).
- Removed deprecated methods from the
HttpClientinterface; theHttpCommandExecutorclientandhttpClientFactoryfields were restored as deprecated to ease the transition. - Used one
HttpClient.FactoryperRemoteWebDriverinstance. - Resolved exceptions from the W3C error state in
ErrorHandler, and kept guarded runnables alive when a task throws anError. - Parsed each BiDi command response once, and cleared
fetchErrorand realm listeners when closingNetworkandScript.
Python
- Applied
ClientConfiguser_agentandextra_headersper connection. - Typed
BaseOptions.set_capabilityandWebElement.get_attributeparameters. - Cleaned up exception chaining for ruff rule B904.
- Moved the full GitHub Actions test suite to nightly runs, keeping fast smoke tests on PRs, and ran Grid specific tests on Windows during scheduled runs.
.NET
- Supported relative locators from elements and shadow roots (shared with Java).
- Added BiDi screenshot image size, a
DestinationFolderoption forStartScreencast,Emulation.SetTextLayoutModeOverride, activity source monitoring, andhasPlannedNavigationinContextCreatedEventArgs. - Removed BiDi context from the hot path, preserved additional data in context commands, and
aligned the
CapabilityResponsetype name with the spec. - NuGet packages now include license and notice files.
Ruby
- Added driver methods to install and uninstall web extensions via BiDi.
- Rendered WebSocket debug log lines lazily.
- Covered BiDi key, wheel, release, and
setFilesscenarios in the Input spec.
JavaScript
- Aligned the BiDi generator with the low-level BiDi contract.
- Ran the test suite against the Grid.
All bindings
- Removed the deprecated Firefox profile extension and certificate methods.
Build & Infra
- Built release artifacts on RBE, and automatically merged the release PR once required checks pass.
- Added a Bazel flag to cross-compile all Selenium Manager binaries from Linux or Mac, and moved Selenium Manager publishing into the snapshot workflow so releases no longer skip it.
- Generated the BiDi schema from the spec’s external specifications list, Mozilla’s Firefox CDDL, and its Commands fragment.
- Added ADRs for a network async/event API and a behavioral contract for the low-level BiDi layer.
- Selenium Manager now shows a proper error message when the metadata file can’t be opened.
🐳 Docker Selenium
- [build] Update Selenium Grid 4.49.0 (#3240)
- [ci] Take the arm64 ChromeDriver from Chrome for Testing (#3238)
- Update Helm release redis to ^0.35.0 (#3239)
- 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
Adam Dangoor
Ikraam Ghoor
Mohamed Mostafa
Raphael Nestler
Yash Pardeshi
Selenium Team Members
Thanks as well to all the team members who contributed to this release:
David Burns
Diego Molina
Alex Popov
Navin Chandra
Nikolay Borisenko
Puja Jagani
Pallavi Sharma
Titus Fortner
Viet Nguyen Duc
Stay tuned for updates by following SeleniumHQ on:
Happy automating!



