Skip to main content

input_test/
input_test.rs

1//! Test mouse/keyboard/scroll simulation (async).
2//!
3//! Run: CLAWSER_CHROME_PATH=out/Default/chrome.exe cargo run --manifest-path clawser-browser/Cargo.toml --example input_test
4
5use clawser_browser::Browser;
6
7#[tokio::main]
8async fn main() {
9    let config = std::env::var("CLAWSER_CONFIG").unwrap_or_else(|_| {
10        if let Ok(chrome) = std::env::var("CLAWSER_CHROME_PATH") {
11            let dir = std::path::Path::new(&chrome).parent().unwrap_or(std::path::Path::new("."));
12            let cfg = dir.join("test_profile.json");
13            if cfg.exists() { return cfg.to_string_lossy().to_string(); }
14        }
15        "out/Default/test_profile.json".to_string()
16    });
17
18    println!("=== Input Simulation Test (async) ===\n");
19
20    let browser = Browser::builder().headful().config(&config).build().await
21        .expect("failed to create browser");
22    let page = browser.navigate("https://www.google.com").await
23        .expect("navigate failed");
24
25    println!("[1] Human idle (2s)...");
26    page.human_idle(2000).await.expect("idle failed");
27
28    println!("[2] Scroll...");
29    page.scroll(300).await.expect("scroll failed");
30
31    println!("[3] Click...");
32    page.click(600.0, 300.0).await.expect("click failed");
33
34    println!("[4] Type...");
35    page.type_text("hello").await.expect("type failed");
36
37    println!("[5] Shutting down...");
38    browser.shutdown().await.expect("shutdown failed");
39
40    println!("\n=== PASSED ===");
41}