Expand description
Browser launching and management.
This module provides the Browser type for connecting to and controlling
Chromium-based browsers via the Chrome DevTools Protocol (CDP).
§Connection Methods
There are three ways to get a Browser instance:
- Launch a new browser -
Browser::launch()spawns a new Chromium process - Connect via WebSocket URL -
Browser::connect()for direct WebSocket connection - Connect via HTTP endpoint -
Browser::connect_over_cdp()discovers WebSocket URL from an HTTP endpoint likehttp://localhost:9222
§Example: Launching a Browser
use viewpoint_core::Browser;
let browser = Browser::launch()
.headless(true)
.launch()
.await?;
let context = browser.new_context().await?;
let page = context.new_page().await?;
page.goto("https://example.com").goto().await?;§Example: Connecting to Existing Browser (MCP-style)
This is useful for MCP servers or tools that need to connect to an already-running browser instance:
use viewpoint_core::Browser;
use std::time::Duration;
// Connect via HTTP endpoint (discovers WebSocket URL automatically)
let browser = Browser::connect_over_cdp("http://localhost:9222")
.timeout(Duration::from_secs(10))
.connect()
.await?;
// Access existing browser contexts (including the default one)
let contexts = browser.contexts().await?;
for context in &contexts {
if context.is_default() {
// The default context has the browser's existing tabs
let pages = context.pages().await?;
println!("Found {} existing pages", pages.len());
}
}
// You can also create new contexts in the connected browser
let new_context = browser.new_context().await?;§Ownership Model
Browsers and contexts track ownership:
- Launched browsers (
Browser::launch()) are “owned” - closing them terminates the process - Connected browsers (
connect(),connect_over_cdp()) are not owned - closing only disconnects, leaving the browser process running - Created contexts (
new_context()) are owned - closing disposes them - Discovered contexts (
contexts()) are not owned - closing only disconnects
Structs§
- Browser
- A browser instance connected via CDP.
- Browser
Builder - Builder for launching a browser.
- Connect
Over CdpBuilder - Builder for connecting to a browser via CDP.
- NewContext
Builder - Builder for creating a new browser context with options.