Expand description
ferridriver – Rust-based browser automation library.
Provides a Playwright-shaped API for browser automation across
multiple backends (CDP WebSocket, CDP Pipes, Playwright WebKit,
WebDriver BiDi).
§Quick Start
ⓘ
use ferridriver::{chromium, Page};
use ferridriver::options::{LaunchOptions, RoleOptions};
let browser = chromium().launch(LaunchOptions::default()).await?;
let page = browser.new_page_with_url("https://example.com").await?;
// Playwright-style locators
page.get_by_role("link", &RoleOptions { name: Some("More".into()), ..Default::default() })
.click(None).await?;
// Content extraction
let title = page.title().await?;
let md = page.markdown().await?;Re-exports§
pub use browser::Browser;pub use browser_type::BrowserType;pub use browser_type::chromium;pub use browser_type::firefox;pub use browser_type::webkit;pub use context::BrowserContext;pub use context::ContextRef;pub use disposable::Disposable;pub use element_handle::BoundingBox;pub use element_handle::ElementHandle;pub use element_handle::ElementState;pub use error::FerriError;pub use error::Result;pub use events::BindingSource;pub use events::ContextEvent;pub use events::ContextEventEmitter;pub use events::EventEmitter;pub use events::ExposedBinding;pub use events::ExposedFn;pub use events::PageEvent;pub use frame::Frame;pub use js_handle::HandleRemote;pub use js_handle::JSHandle;pub use locator::FrameLocator;pub use locator::Locator;pub use page::Page;pub use url_matcher::UrlMatcher;pub use url_matcher::UrlPredicate;pub use video::Video;
Modules§
- actions
- Core automation primitives – shared by MCP tools, BDD steps, and library consumers.
- backend
- Backend abstraction layer for browser automation.
- browser
- Browser management – mirrors Playwright’s
Browserinterface. - browser_
type BrowserType— Playwright-shaped factory for launching and connecting to browsers.- codegen
- Interactive code recorder (codegen).
- console_
message ConsoleMessage— live handle for page-sideconsole.*calls.- context
BrowserContext– isolated browser environment with pages, cookies, and logs.- dialog
Dialog— live handle for JavaScript dialogs (alert,confirm,prompt,beforeunload).- disposable
- Playwright parity:
client/disposable.tsDisposable/DisposableStub. - download
Download— live handle for browser-initiated downloads intercepted via CDPBrowser.downloadWillBegin+Browser.downloadProgressorBiDibrowsingContext.downloadWillBegin+browsingContext.downloadEnd.- element_
handle ElementHandle—JSHandlespecialisation for DOM elements.- error
- Structured error taxonomy for ferridriver’s public API.
- events
- Event system for Page, Frame, and
BrowserContext. - ffmpeg
- Video encoding via ffmpeg subprocess (matches Playwright’s approach).
- file_
chooser FileChooser— live handle for<input type=file>file pickers intercepted viaPage.fileChooserOpened(CDP) /input.fileDialogOpened(BiDi).- frame
- Frame API – mirrors Playwright’s Frame interface.
- har
- HAR (HTTP Archive) replay for
page.routeFromHAR/context.routeFromHAR. - http_
client - WHATWG-fetch-compatible HTTP client – the runner-side request
stack, separate from the browser/page network. Backs both the
fetchglobal and the Playwright-stylerequestbinding. - install
- Browser installation module.
- js_
handle JSHandle— lifecycle object for an arbitrary JavaScript value in the page.- locator
- Lazy element locator.
- locator_
handler - Locator handler registry — Playwright’s
addLocatorHandler/removeLocatorHandler. - network
- Network lifecycle objects:
Request,Response,WebSocket. - options
- Option structs for the Page and Locator API.
- page
- High-level Page API – mirrors Playwright’s Page interface.
- protocol
- Wire-level protocol types shared with Playwright.
- route
- Network request interception –
page.route()/page.unroute(). - selectors
- Playwright-style selector engine.
- snapshot
- Accessibility tree snapshot — compact, LLM-friendly format.
- state
- Browser state management with instance→context→page hierarchy.
- steps
- BDD step definitions — trait-based registry with self-documenting steps.
- url_
matcher - Playwright-compatible URL matching.
- video
- Video recording via CDP screencast + in-process ffmpeg encoding.
- web_
error WebError— live handle for page-side unhandled errors and unhandled promise rejections.