Change8

selenium-4.30.0

Breaking Changes
📦 seleniumView on GitHub →
4 breaking15 features🐛 16 fixes🔧 26 symbols

Summary

Selenium 4.30 introduces extensive .NET nullability annotations, removes obsolete members, and adds numerous BiDi and Grid features while fixing a wide range of bugs across all language bindings.

⚠️ Breaking Changes

  • Removed obsolete members and types for .NET 4.30; code referencing these members must be updated to use the new APIs.
  • Enabled Nullable Reference Types across the .NET bindings; projects must enable nullable context or adjust code to handle nullable warnings.
  • Made many BiDi types (e.g., LocalValue, RemoteValue, PartitionDescriptor, UrlPattern, Script.Target, LogEntry, BytesValue, Actions, ProxyConfiguration, Locator, ClipRectangle, RealmInfo, Origin) non-nested, changing their namespace and type names; update imports and usage accordingly.
  • Trimmed CDP support when publishing AOT apps, which removes CDP assemblies from the published output; applications relying on CDP at runtime need to include them manually.

Migration Steps

  1. Replace any removed obsolete .NET members/types with their recommended replacements as listed in the 4.30 release notes.
  2. Enable nullable reference types in your .NET project (add <Nullable>enable</Nullable> to the csproj) or annotate your code to handle possible null values.
  3. Update imports and object constructions for BiDi types that were made non-nested (e.g., use Selenium.BiDi.RemoteValue instead of Selenium.BiDi.LocalValue.RemoteValue).
  4. If publishing AOT apps, manually include required CDP assemblies or disable the trimming option.
  5. Adjust Python code to use the By class attributes (By.ID, By.NAME, etc.) instead of raw string locators.
  6. Review and update any custom scripts that rely on the previous nested BiDi type hierarchy.

✨ New Features

  • Added SystemClock singleton to .NET bindings.
  • Added set viewport command for browsing context in BiDi (Ruby).
  • Added support for handling user prompts in BiDi.
  • Added Browser context activate command in BiDi (Ruby).
  • Added event stop session traces in Grid (Node).
  • Introduced new server start timeout variable in Grid.
  • Added SetFiles command in Input module for BiDi (.NET).
  • Added UnhandledPromptBehavior capability for new sessions in BiDi (.NET).
  • Encapsulated BiDi transport inside a Broker class (.NET).
  • Aligned Script.LocalValue.Map with the spec and enabled negative zero handling.
  • Migrated RemoteValue to separate types in BiDi (.NET).
  • Made various BiDi types non-nested to simplify the API (PartitionDescriptor, UrlPattern, Script.Target, LogEntry, BytesValue, Actions, ProxyConfiguration, Locator, ClipRectangle, RealmInfo, Origin).
  • Added Selenium Manager support for nightly Grid builds in Rust.
  • Updated Python bindings to use By class attributes instead of string literals.
  • Improved test discovery and linting for Python bindings.

🐛 Bug Fixes

  • Fixed dev environment to run tests on Windows/MacOS for .NET.
  • Fixed \"no anonymous block parameter\" issue in Ruby 3.1.
  • Revisited ignored integration tests for Chrome/Edge in .NET.
  • Removed warning when passing null driver paths to driver service (.NET).
  • Corrected type annotation for expected_conditions in Python.
  • Parsed response before deserialization in .NET.
  • Made internal console writer more flexible by accepting TextWriter (.NET).
  • Fixed atoms generation lowdash issue (Issue 12549).
  • Fixed Chrome and Firefox BiDi tests for CI RBE in JavaScript.
  • Ignored devtools during linting in Python.
  • Fixed code formatting in selenium_manager_tests.py (Python).
  • Fixed pytest test discovery issues (Python).
  • Renamed credentials test file to be executed (Python).
  • Updated Python development instructions in README.
  • Modified delete cookie implementation and added tests.
  • Fixed test discovery for pytest and other CI related issues.

🔧 Affected Symbols

SystemClockWebDriver.SessionIdDriverFinderCDP generated codeRemoteValueLocalValueScript.LocalValue.MapPartitionDescriptorUrlPatternScript.TargetLogEntryBytesValueActionsProxyConfigurationLocatorClipRectangleRealmInfoOriginBrokerSetFiles commandUnhandledPromptBehaviorBy class attributesexpected_conditionsWebElementCapabilitiesDriverService