Browser

Struct Browser 

Source
pub struct Browser { /* private fields */ }
Expand description

A browser instance connected via CDP.

Implementations§

Source§

impl Browser

Source

pub fn launch() -> BrowserBuilder

Create a browser builder for launching a new browser.

§Example
use viewpoint_core::Browser;

let browser = Browser::launch()
    .headless(true)
    .launch()
    .await?;
Examples found in repository?
examples/basic_navigation.rs (line 23)
19async fn main() -> Result<(), Box<dyn std::error::Error>> {
20    println!("Launching browser...");
21
22    // Launch a headless browser
23    let browser = Browser::launch()
24        .headless(true)
25        .timeout(Duration::from_secs(30))
26        .launch()
27        .await?;
28
29    println!("Browser launched successfully!");
30
31    // Create a new browser context (isolated environment)
32    let context = browser.new_context().await?;
33    println!("Created browser context: {}", context.id());
34
35    // Create a new page
36    let page = context.new_page().await?;
37    println!("Created page with target: {}", page.target_id());
38
39    // Navigate to a URL with default wait (Load event)
40    println!("\nNavigating to example.com...");
41    let response = page.goto("https://example.com").goto().await?;
42    println!("Navigation complete! URL: {}", response.url());
43
44    // Navigate with DomContentLoaded wait (faster)
45    println!("\nNavigating to httpbin.org with DomContentLoaded wait...");
46    let response = page
47        .goto("https://httpbin.org/html")
48        .wait_until(DocumentLoadState::DomContentLoaded)
49        .timeout(Duration::from_secs(15))
50        .goto()
51        .await?;
52    println!("Navigation complete! URL: {}", response.url());
53
54    // Navigate with custom referer
55    println!("\nNavigating with custom referer...");
56    let response = page
57        .goto("https://httpbin.org/headers")
58        .referer("https://google.com")
59        .wait_until(DocumentLoadState::Load)
60        .goto()
61        .await?;
62    println!("Navigation complete! URL: {}", response.url());
63
64    // Close the browser
65    println!("\nClosing browser...");
66    browser.close().await?;
67    println!("Done!");
68
69    Ok(())
70}
Source

pub async fn connect(ws_url: &str) -> Result<Self, BrowserError>

Connect to an already-running browser via WebSocket URL.

§Example
use viewpoint_core::Browser;

let browser = Browser::connect("ws://localhost:9222/devtools/browser/...").await?;
§Errors

Returns an error if the connection fails.

Source

pub async fn new_context(&self) -> Result<BrowserContext, BrowserError>

Create a new isolated browser context.

Browser contexts are isolated environments within the browser, similar to incognito windows. They have their own cookies, cache, and storage.

§Errors

Returns an error if context creation fails.

Examples found in repository?
examples/basic_navigation.rs (line 32)
19async fn main() -> Result<(), Box<dyn std::error::Error>> {
20    println!("Launching browser...");
21
22    // Launch a headless browser
23    let browser = Browser::launch()
24        .headless(true)
25        .timeout(Duration::from_secs(30))
26        .launch()
27        .await?;
28
29    println!("Browser launched successfully!");
30
31    // Create a new browser context (isolated environment)
32    let context = browser.new_context().await?;
33    println!("Created browser context: {}", context.id());
34
35    // Create a new page
36    let page = context.new_page().await?;
37    println!("Created page with target: {}", page.target_id());
38
39    // Navigate to a URL with default wait (Load event)
40    println!("\nNavigating to example.com...");
41    let response = page.goto("https://example.com").goto().await?;
42    println!("Navigation complete! URL: {}", response.url());
43
44    // Navigate with DomContentLoaded wait (faster)
45    println!("\nNavigating to httpbin.org with DomContentLoaded wait...");
46    let response = page
47        .goto("https://httpbin.org/html")
48        .wait_until(DocumentLoadState::DomContentLoaded)
49        .timeout(Duration::from_secs(15))
50        .goto()
51        .await?;
52    println!("Navigation complete! URL: {}", response.url());
53
54    // Navigate with custom referer
55    println!("\nNavigating with custom referer...");
56    let response = page
57        .goto("https://httpbin.org/headers")
58        .referer("https://google.com")
59        .wait_until(DocumentLoadState::Load)
60        .goto()
61        .await?;
62    println!("Navigation complete! URL: {}", response.url());
63
64    // Close the browser
65    println!("\nClosing browser...");
66    browser.close().await?;
67    println!("Done!");
68
69    Ok(())
70}
Source

pub fn new_context_builder(&self) -> NewContextBuilder<'_>

Create a new context options builder.

Use this to create a browser context with custom configuration.

§Example
use viewpoint_core::{Browser, Permission};

let browser = Browser::launch().headless(true).launch().await?;

let context = browser.new_context_builder()
    .geolocation(37.7749, -122.4194)
    .permissions(vec![Permission::Geolocation])
    .offline(false)
    .build()
    .await?;
Source

pub async fn new_context_with_options( &self, options: ContextOptions, ) -> Result<BrowserContext, BrowserError>

Create a new isolated browser context with options.

§Errors

Returns an error if context creation fails.

Source

pub async fn close(&self) -> Result<(), BrowserError>

Close the browser.

If this browser was launched by us, the process will be terminated. If it was connected to, only the WebSocket connection is closed.

§Errors

Returns an error if closing fails.

Examples found in repository?
examples/basic_navigation.rs (line 66)
19async fn main() -> Result<(), Box<dyn std::error::Error>> {
20    println!("Launching browser...");
21
22    // Launch a headless browser
23    let browser = Browser::launch()
24        .headless(true)
25        .timeout(Duration::from_secs(30))
26        .launch()
27        .await?;
28
29    println!("Browser launched successfully!");
30
31    // Create a new browser context (isolated environment)
32    let context = browser.new_context().await?;
33    println!("Created browser context: {}", context.id());
34
35    // Create a new page
36    let page = context.new_page().await?;
37    println!("Created page with target: {}", page.target_id());
38
39    // Navigate to a URL with default wait (Load event)
40    println!("\nNavigating to example.com...");
41    let response = page.goto("https://example.com").goto().await?;
42    println!("Navigation complete! URL: {}", response.url());
43
44    // Navigate with DomContentLoaded wait (faster)
45    println!("\nNavigating to httpbin.org with DomContentLoaded wait...");
46    let response = page
47        .goto("https://httpbin.org/html")
48        .wait_until(DocumentLoadState::DomContentLoaded)
49        .timeout(Duration::from_secs(15))
50        .goto()
51        .await?;
52    println!("Navigation complete! URL: {}", response.url());
53
54    // Navigate with custom referer
55    println!("\nNavigating with custom referer...");
56    let response = page
57        .goto("https://httpbin.org/headers")
58        .referer("https://google.com")
59        .wait_until(DocumentLoadState::Load)
60        .goto()
61        .await?;
62    println!("Navigation complete! URL: {}", response.url());
63
64    // Close the browser
65    println!("\nClosing browser...");
66    browser.close().await?;
67    println!("Done!");
68
69    Ok(())
70}
Source

pub fn connection(&self) -> &Arc<CdpConnection>

Get a reference to the CDP connection.

Source

pub fn is_owned(&self) -> bool

Check if this browser was launched by us.

Trait Implementations§

Source§

impl Debug for Browser

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Browser

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more