Skip to main content

Where seleniumbase-rs fits among the tools people use to automate a browser, and where each of them is the better choice. This page is written from general knowledge of these projects and from this crate’s own state; check a competitor’s current documentation before you decide, because every one of them keeps moving.

Note

Nothing here is a benchmark: there is no measured speed comparison with any other tool (see Benchmarks for what this crate itself costs).

The short version#

If you need…Reach for
A test framework in Rust with the SeleniumBase APIseleniumbase-rs
Chrome automation in Rust without a driver, with locators that waitseleniumbase-rs (sb_cdp)
An MCP server so an AI agent can drive and debug a browserseleniumbase-rs, or the Python seleniumbase-mcp
Chromium, Firefox and WebKit from one API, with a trace viewerPlaywright
The most mature, widest-supported automation standardSelenium (WebDriver)
A Python suite that already uses SeleniumBasePython SeleniumBase
A raw Rust DevTools Protocol librarychromiumoxide or a similar crate
A low-level Rust WebDriver clientthirtyfour (this crate builds on it)

Against the main alternatives#

Python SeleniumBase#

This crate is its port, so the comparison is about language and age. Python has the largest example library, the most users, a mature plugin ecosystem and the fastest path to a first test. The Rust port is new (0.1.0, unreleased), has every upstream API recorded in the parity table but with the composed and not-applicable entries not yet independently reviewed, and cannot run Python plugins. In exchange it has compile-time checks, a single native binary, a driver-free engine, a browser pool, request interception and agent tooling. Choose Python if your team writes Python; choose the port if your harness belongs in Rust.

Playwright#

Playwright is the benchmark for developer experience: auto-waiting, codegen, a trace viewer, bundled browsers, and Chromium, Firefox and WebKit from one API, with official bindings for JavaScript/TypeScript, Python, Java and .NET. It has no official Rust binding. This crate’s pure CDP engine is Chrome and Chromium only and has no trace viewer, but it gives a Rust-native, driver-free API with retrying locators and expectations, and a playwright feature that offers a Playwright-compatible mode through a community Rust implementation. If you need WebKit or Firefox coverage or the trace viewer, use Playwright.

Selenium and thirtyfour#

Selenium is the long-standing standard: every major browser, Selenium Grid, huge documentation and community. thirtyfour is a good Rust WebDriver client. This crate’s WebDriver engine is built on it and adds the SeleniumBase layer on top (waits before actions, BaseCase, recorder, reports, stealth). Use plain thirtyfour when you want a thin client and full control; use this crate when you want the batteries.

Puppeteer, chromiumoxide and other CDP libraries#

These talk to Chrome over the DevTools Protocol, as the sb_cdp engine does. Puppeteer is the Node reference; chromiumoxide is a Rust crate with generated protocol bindings and a broad surface. sb_cdp is a smaller, hand-written client focused on testing: locators that re-find and wait, retrying expectations, trusted input, a pool of isolated contexts and a mock browser for tests without Chrome. If you need the whole protocol surface, a generated binding is the better base.

Cypress, WebdriverIO and other JavaScript tools#

They suit frontend teams that live in JavaScript and want tight integration with their build tooling. This crate is not a replacement for that workflow; it is for suites that belong in Rust or that ship as a native binary.

Anti-detection tools (undetected-chromedriver, nodriver, Botasaurus and similar)#

These Python and Node tools focus on not looking automated. This crate has the same family of features from SeleniumBase (UC mode, fingerprints, masking providers, human-paced input) and a driver-free engine that leaves no webdriver markers. TLS (JA3/JA4) and HTTP/2 impersonation, built from measured data for one browser and system (Chrome 155 on macOS), with an HTTP session that continues a browser’s session (HttpSession), a loopback proxy for a real Chrome (MitmProxy) and a session that moves between the two (StealthSession), is a separate, experimental project on top of this crate: seleniumbase-rs-stealth (see Stealth Scraping). No tool, this one included, can promise to pass a given detection service.

HTTP impersonation clients (curl-impersonate, wreq and similar)#

They make a plain HTTP client look like a browser at the TLS level, without a browser. This crate does not; the companion crate seleniumbase-rs-mimic (in seleniumbase-rs-stealth) wraps wreq on BoringSSL with a measured Chrome 155 profile for macOS, custom JA3/JA4/Akamai inputs, and a way to solve a challenge in Chrome and continue over HTTP. It is young and measured on macOS with Chrome 155 only. If TLS fidelity for another browser or system is what you need today, use one of those libraries directly.

At a glance#

seleniumbase-rsPython SeleniumBasePlaywrightSelenium / thirtyfourchromiumoxide
LanguageRustPythonJS/TS, Python, Java, .NETmany / RustRust
BrowsersChrome/Chromium (CDP); Chrome, Firefox, Safari via WebDriverWebDriver browsersChromium, Firefox, WebKitall WebDriver browsersChromium
Driver neededno (pure CDP) or yes (WebDriver)yesnoyesno
Test framework includedyes (BaseCase, recorder, reports)yesyesnono
Anti-detectionUC mode, fingerprints, humanised inputyeslimited by designnono
AI-agent (MCP) toolingyes, with debug and test-export toolsyesvia separate serversvia separate serversno
Distributionone native binaryPython packageNode packagevariesRust crate
Maturity and communitynew, smalllargelargevery largemoderate

Where this crate is behind#

Be honest with yourself about these before choosing it:

Warning
  • It is young: 0.1.0, not on crates.io, with most behaviour covered by unit tests and a mock browser rather than long use against real sites.
  • The parity table is a claim that has not been independently reviewed.
  • Chrome-centred: no WebKit, and no bundled browser downloads beyond the chromedriver.
  • No trace viewer, no cross-language ecosystem, a small community.
  • TLS and HTTP/2 impersonation is not in this crate: it is the experimental seleniumbase-rs-stealth project, measured for one browser and system (Chrome 155 on macOS) and tested against local servers and a local Chrome, not against live services.

Next steps#