pub struct Browser { /* private fields */ }Expand description
A browser instance connected via CDP.
Implementations§
Source§impl Browser
impl Browser
Sourcepub fn launch() -> BrowserBuilder
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}Sourcepub async fn connect(ws_url: &str) -> Result<Self, BrowserError>
pub async fn connect(ws_url: &str) -> Result<Self, BrowserError>
Sourcepub async fn new_context(&self) -> Result<BrowserContext, BrowserError>
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}Sourcepub fn new_context_builder(&self) -> NewContextBuilder<'_>
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?;Sourcepub async fn new_context_with_options(
&self,
options: ContextOptions,
) -> Result<BrowserContext, BrowserError>
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.
Sourcepub async fn close(&self) -> Result<(), BrowserError>
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}Sourcepub fn connection(&self) -> &Arc<CdpConnection>
pub fn connection(&self) -> &Arc<CdpConnection>
Get a reference to the CDP connection.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Browser
impl !RefUnwindSafe for Browser
impl Send for Browser
impl Sync for Browser
impl Unpin for Browser
impl !UnwindSafe for Browser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more