pub struct Browser { /* private fields */ }Expand description
Browser represents a browser instance.
A Browser is created when you call BrowserType::launch(). It provides methods
to create browser contexts and pages.
§Example
use playwright_rs::protocol::Playwright;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let playwright = Playwright::launch().await?;
let chromium = playwright.chromium();
let browser = chromium.launch().await?;
println!("Browser: {} version {}", browser.name(), browser.version());
assert!(browser.is_connected());
let bt = browser.browser_type();
assert_eq!(bt.name(), "chromium");
let context = browser.new_context().await?;
let _page = context.new_page().await?;
assert_eq!(browser.contexts().len(), 1);
browser.on_disconnected(|| async { Ok(()) }).await?;
browser.start_tracing(None).await?;
let _trace_bytes = browser.stop_tracing().await?;
browser.close().await?;
Ok(())
}Implementations§
Source§impl Browser
impl Browser
Sourcepub fn new(
parent: Arc<dyn ChannelOwner>,
type_name: String,
guid: Arc<str>,
initializer: Value,
) -> Result<Self>
pub fn new( parent: Arc<dyn ChannelOwner>, type_name: String, guid: Arc<str>, initializer: Value, ) -> Result<Self>
Creates a new Browser from protocol initialization
This is called by the object factory when the server sends a __create__ message
for a Browser object.
§Arguments
parent- The parent BrowserType objecttype_name- The protocol type name (“Browser”)guid- The unique identifier for this browser instanceinitializer- The initialization data from the server
§Errors
Returns error if initializer is missing required fields (version, name)
Sourcepub fn version(&self) -> &str
pub fn version(&self) -> &str
Returns the browser version string.
See: https://playwright.dev/docs/api/class-browser#browser-version
Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Returns the browser name (e.g., “chromium”, “firefox”, “webkit”).
See: https://playwright.dev/docs/api/class-browser#browser-name
Sourcepub fn is_connected(&self) -> bool
pub fn is_connected(&self) -> bool
Returns true if the browser is connected.
The browser is connected when it is launched and becomes disconnected when:
browser.close()is called- The browser process crashes
- The browser is closed by the user
See: https://playwright.dev/docs/api/class-browser#browser-is-connected
Sourcepub async fn new_context(&self) -> Result<BrowserContext>
pub async fn new_context(&self) -> Result<BrowserContext>
Creates a new browser context.
A browser context is an isolated session within the browser instance, similar to an incognito profile. Each context has its own cookies, cache, and local storage.
§Errors
Returns error if:
- Browser has been closed
- Communication with browser process fails
See: https://playwright.dev/docs/api/class-browser#browser-new-context
Sourcepub async fn new_context_with_options(
&self,
options: BrowserContextOptions,
) -> Result<BrowserContext>
pub async fn new_context_with_options( &self, options: BrowserContextOptions, ) -> Result<BrowserContext>
Creates a new browser context with custom options.
A browser context is an isolated session within the browser instance, similar to an incognito profile. Each context has its own cookies, cache, and local storage.
This method allows customizing viewport, user agent, locale, timezone, and other settings.
§Errors
Returns error if:
- Browser has been closed
- Communication with browser process fails
- Invalid options provided
- Storage state file cannot be read or parsed
See: https://playwright.dev/docs/api/class-browser#browser-new-context
Sourcepub async fn new_page(&self) -> Result<Page>
pub async fn new_page(&self) -> Result<Page>
Creates a new page in a new browser context.
This is a convenience method that creates a default context and then
creates a page in it. This is equivalent to calling browser.new_context().await?.new_page().await?.
The created context is not directly accessible, but will be cleaned up when the page is closed.
§Errors
Returns error if:
- Browser has been closed
- Communication with browser process fails
See: https://playwright.dev/docs/api/class-browser#browser-new-page
Sourcepub fn contexts(&self) -> Vec<BrowserContext>
pub fn contexts(&self) -> Vec<BrowserContext>
Returns all open browser contexts.
A new browser starts with no contexts. Contexts are created via
new_context() and cleaned up when they are closed.
See: https://playwright.dev/docs/api/class-browser#browser-contexts
Sourcepub fn browser_type(&self) -> BrowserType
pub fn browser_type(&self) -> BrowserType
Returns the BrowserType that was used to launch this browser.
See: https://playwright.dev/docs/api/class-browser#browser-browser-type
Sourcepub async fn new_browser_cdp_session(&self) -> Result<CDPSession>
pub async fn new_browser_cdp_session(&self) -> Result<CDPSession>
Registers a handler that fires when the browser is disconnected.
The browser can become disconnected when it is closed, crashes, or the process is killed. The handler is called with no arguments.
§Arguments
handler- Async closure called when the browser disconnects.
§Errors
Returns an error only if the mutex is poisoned (practically never).
Creates a browser-level Chrome DevTools Protocol session.
Unlike BrowserContext::new_cdp_session
which is scoped to a page, this session is attached to the browser itself.
Chromium only.
See: https://playwright.dev/docs/api/class-browser#browser-new-browser-cdp-session
Sourcepub async fn on_disconnected<F, Fut>(&self, handler: F) -> Result<()>
pub async fn on_disconnected<F, Fut>(&self, handler: F) -> Result<()>
Sourcepub async fn start_tracing(
&self,
options: Option<StartTracingOptions>,
) -> Result<()>
pub async fn start_tracing( &self, options: Option<StartTracingOptions>, ) -> Result<()>
Starts CDP tracing on this browser (Chromium only).
Only one trace may be active at a time per browser instance.
§Arguments
options- Optional tracing configuration (screenshots, categories, page).
§Errors
Returns error if:
- Tracing is already active
- Called on a non-Chromium browser
- Communication with the browser fails
See: https://playwright.dev/docs/api/class-browser#browser-start-tracing
Sourcepub async fn stop_tracing(&self) -> Result<Vec<u8>>
pub async fn stop_tracing(&self) -> Result<Vec<u8>>
Stops CDP tracing and returns the raw trace data.
The returned bytes can be written to a .json file and loaded in
chrome://tracing or Perfetto.
§Errors
Returns error if no tracing was started or communication fails.
See: https://playwright.dev/docs/api/class-browser#browser-stop-tracing
Sourcepub async fn close(&self) -> Result<()>
pub async fn close(&self) -> Result<()>
Closes the browser and all of its pages (if any were opened).
This is a graceful operation that sends a close command to the browser and waits for it to shut down properly.
§Errors
Returns error if:
- Browser has already been closed
- Communication with browser process fails
See: https://playwright.dev/docs/api/class-browser#browser-close