pub struct Page { /* private fields */ }Implementations§
Source§impl Page
impl Page
Navigate to URL (returns immediately, does not wait for load).
Sourcepub async fn wait_for_load(&self) -> Result<()>
pub async fn wait_for_load(&self) -> Result<()>
Wait for next navigation/load event.
Sourcepub async fn js(&self, expr: &str) -> Result<String>
pub async fn js(&self, expr: &str) -> Result<String>
Run JS expression in page context, return result as String.
Examples found in repository?
examples/youtube_test.rs (line 17)
4async fn main() {
5 println!("=== YouTube Test ===\n");
6
7 let browser = Browser::builder()
8 .headful()
9 .profile(7, 777)
10 .build()
11 .await
12 .expect("launch failed");
13
14 let page = browser.new_page("https://www.youtube.com").await.expect("nav failed");
15 page.wait(3000).await;
16
17 let title = page.js("document.title").await.unwrap_or_default();
18 let url = page.url().await.unwrap_or_default();
19 println!("Title: {title}");
20 println!("URL: {url}");
21
22 println!("\nBrowser open. Ctrl+C to exit.");
23 loop {
24 tokio::time::sleep(std::time::Duration::from_secs(60)).await;
25 }
26}More examples
examples/smoke_test.rs (line 24)
4async fn main() {
5 println!("=== Smoke Test ===\n");
6
7 let browser = Browser::builder()
8 .headful()
9 .profile(7, 777)
10 .build()
11 .await
12 .expect("launch failed");
13
14 let page = browser.new_page("about:blank").await.expect("page failed");
15
16 let checks = &[
17 ("webdriver", "navigator.webdriver.toString()"),
18 ("timezone", "Intl.DateTimeFormat().resolvedOptions().timeZone"),
19 ("cores", "navigator.hardwareConcurrency.toString()"),
20 ("screen", "screen.width+'x'+screen.height"),
21 ("UA", "navigator.userAgent"),
22 ];
23 for (name, expr) in checks {
24 let val = page.js(expr).await.unwrap_or_default();
25 println!("{name}: {val}");
26 }
27
28 println!("\nBrowser open. Ctrl+C to exit.");
29 loop {
30 tokio::time::sleep(std::time::Duration::from_secs(60)).await;
31 }
32}Sourcepub async fn js_as<T: DeserializeOwned>(&self, expr: &str) -> Result<T>
pub async fn js_as<T: DeserializeOwned>(&self, expr: &str) -> Result<T>
Run JS and deserialize result into T.
Sourcepub async fn js_on_new_document(&self, script: &str) -> Result<()>
pub async fn js_on_new_document(&self, script: &str) -> Result<()>
Inject script that runs on every new document before page JS.
Sourcepub async fn url(&self) -> Result<String>
pub async fn url(&self) -> Result<String>
Current page URL.
Examples found in repository?
examples/youtube_test.rs (line 18)
4async fn main() {
5 println!("=== YouTube Test ===\n");
6
7 let browser = Browser::builder()
8 .headful()
9 .profile(7, 777)
10 .build()
11 .await
12 .expect("launch failed");
13
14 let page = browser.new_page("https://www.youtube.com").await.expect("nav failed");
15 page.wait(3000).await;
16
17 let title = page.js("document.title").await.unwrap_or_default();
18 let url = page.url().await.unwrap_or_default();
19 println!("Title: {title}");
20 println!("URL: {url}");
21
22 println!("\nBrowser open. Ctrl+C to exit.");
23 loop {
24 tokio::time::sleep(std::time::Duration::from_secs(60)).await;
25 }
26}Sourcepub async fn screenshot(&self) -> Result<Vec<u8>>
pub async fn screenshot(&self) -> Result<Vec<u8>>
Capture PNG screenshot.
Sourcepub async fn click(&self, x: f64, y: f64) -> Result<()>
pub async fn click(&self, x: f64, y: f64) -> Result<()>
Click at (x, y) with realistic mouse movement + timing.
Sourcepub async fn type_text(&self, text: &str) -> Result<()>
pub async fn type_text(&self, text: &str) -> Result<()>
Type text into focused element with realistic keystroke timing.
Sourcepub async fn scroll(&self, delta_y: f64) -> Result<()>
pub async fn scroll(&self, delta_y: f64) -> Result<()>
Scroll by delta_y pixels (positive = down).
Sourcepub async fn wait(&self, ms: u64)
pub async fn wait(&self, ms: u64)
Sleep for ms milliseconds.
Examples found in repository?
examples/youtube_test.rs (line 15)
4async fn main() {
5 println!("=== YouTube Test ===\n");
6
7 let browser = Browser::builder()
8 .headful()
9 .profile(7, 777)
10 .build()
11 .await
12 .expect("launch failed");
13
14 let page = browser.new_page("https://www.youtube.com").await.expect("nav failed");
15 page.wait(3000).await;
16
17 let title = page.js("document.title").await.unwrap_or_default();
18 let url = page.url().await.unwrap_or_default();
19 println!("Title: {title}");
20 println!("URL: {url}");
21
22 println!("\nBrowser open. Ctrl+C to exit.");
23 loop {
24 tokio::time::sleep(std::time::Duration::from_secs(60)).await;
25 }
26}Auto Trait Implementations§
impl Freeze for Page
impl !RefUnwindSafe for Page
impl Send for Page
impl Sync for Page
impl Unpin for Page
impl UnsafeUnpin for Page
impl !UnwindSafe for Page
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