Skip to main content

Crate ferridriver

Crate ferridriver 

Source
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 Browser interface.
browser_type
BrowserType — Playwright-shaped factory for launching and connecting to browsers.
codegen
Interactive code recorder (codegen).
console_message
ConsoleMessage — live handle for page-side console.* 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.ts Disposable / DisposableStub.
download
Download — live handle for browser-initiated downloads intercepted via CDP Browser.downloadWillBegin + Browser.downloadProgress or BiDi browsingContext.downloadWillBegin + browsingContext.downloadEnd.
element_handle
ElementHandleJSHandle specialisation 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 via Page.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 fetch global and the Playwright-style request binding.
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.