Selenium 4.52 Released!

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

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

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


Selenium 4.52 Released

✨ Highlights

  • Selenium Manager now validates TLS certificates and explains certificate errors. An opt-in insecure mode is available for environments that need it.
  • Trust roots were updated across bindings after the eMudhra CA distrust: Python requires a newer certifi, Selenium Manager bumps its trust roots, and JavaScript requires Node releases that block the compromised keys.
  • [Ruby] The client now raises on unverified Grid certificates instead of silently falling back to VERIFY_NONE.
  • [Python] [Ruby] BiDi WebSocket responses are no longer polled with sleeps, so commands return faster. In Python, websocket_interval is now deprecated.
  • [Python] [JavaScript] First steps toward shipping Selenium Manager as a separate package.
  • [JavaScript] The atoms that Appium uses were ported from Closure to TypeScript.
  • [Build & Infra] Moved to Bazel 9.3.0 and updated all Bazel dependencies.

📦 Notable Changes

Java

  • selenium.debug and webdriver.verbose now configure the real logger.
  • BiDi events are no longer delivered to a listener after it is cleared.
  • Stopped waiting for process output once the process is silent.
  • Third-party jars are under lib/ in the distribution zips again, and annotation-only jars are no longer shipped as POM dependencies.
  • Added tests for the BiDi generator and to check the shipped bytecode supports Java 11.

Python

  • Web extensions can be installed from the driver.
  • Cookie domain and path matching now follow RFC 6265.
  • Service.start() is bounded by time, so it fails fast on Windows.
  • Fixed ErrorHandler failing when the error value is missing, and Proxy now uses the ssl_proxy setting when created from a raw dict.
  • Generated BiDi numbers are held to their declared ranges, and null list elements are rejected.

Ruby

  • HTTPS connections to the Grid now raise on unverified certificates instead of ignoring them.
  • Stopped passing a bare --proxy to Selenium Manager.
  • BiDi values are checked against their declared types and number ranges.
  • Atoms now work outside Bazel, and local_dev makes it easy to use a local checkout.

.NET

  • Added a unit test suite and moved cookie, proxy, and other tests to it.
  • Made driver configurations configurable through environment variables and NUnit parameters.

JavaScript

  • Ported the atoms Appium uses to TypeScript.
  • Fixed locator edge cases in the find_elements atom and ignored hidden links in link text locators.
  • Required Node releases that block the compromised eMudhra keys.

Grid

  • A node config with a null stereotype now throws a ConfigException.

Selenium Manager

  • Validated TLS certificates in the HTTP client, with an opt-in insecure mode.
  • Created the HTTP client on first use and explained TLS certificate errors.
  • Returned the cached artifact once the lock is held instead of downloading it again.
  • Stopped resolving a Java runtime on --grid.
  • Updated dependencies, replaced the fs2 crate with the standard file lock, and moved from sevenz_rust to sevenz_rust2.

Build & Infra

  • Bumped to Bazel 9.3.0, enabled CDC, and updated all Bazel dependencies.
  • Ran unit tests in parallel while keeping browser tests serial.
  • Patched rules_jvm to fix a 5 second hostname lookup deadlock in JUnit 5 tests.
  • Scoped RBE internet access to the tests that use Selenium Manager.
  • Open bot PRs are now updated in place, and branches of PRs closed without merging are deleted.

🐳 Docker Selenium

  • [build] Update base image to Ubuntu 26.04 (resolute) (#3272)
  • [build] Update Selenium Grid 4.51.0 (#3267)
  • [build] Update Selenium Grid 4.50.0 (#3257)
  • [ci] Build FFmpeg natively per architecture, then merge (#3273)
  • [test] Drop backward-compat Edge versions whose driver Microsoft has pruned (#3263)
  • Update Helm release traefik to v42 (#3270)
  • Update Helm release kube-prometheus-stack to v92 (#3258)
  • 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

Daniel

Daniel

Jyotheeswara Reddy Gottam

Jyotheeswara Reddy Gottam

Nagendra Bhat

Nagendra Bhat

Mohamed Mostafa

Mohamed Mostafa

Mohab Mohie

Mohab Mohie

Sagar Kewat

Sagar Kewat

Saiyam Jain

Saiyam Jain

Yash Pardeshi

Yash Pardeshi

Selenium Docs & Website

Ujjwal Kumar Singh

Ujjwal Kumar Singh

harshil sharma

harshil sharma

Stuart Minchington

Stuart Minchington

Selenium Team Members

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

Augustin Gottlieb

Augustin Gottlieb

ian zhang

ian zhang

David Burns

David Burns

Boni García

Boni García

Corey Goldberg

Corey Goldberg

Diego Molina

Diego Molina

Alex Popov

Alex Popov

Nikolay Borisenko

Nikolay Borisenko

Puja Jagani

Puja Jagani

Pallavi Sharma

Pallavi Sharma

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!