use rpage::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
println!("=== 新增 API 验证 ===\n");
let page = ChromiumPage::connect("http://127.0.0.1:9222").await?;
println!("[1] goto (链式)...");
page.goto("https://example.com").await?;
let title = page.title().await?;
println!(" 标题: {title}");
println!("\n[2] get_text...");
let heading = page.get_text("h1").await?;
println!(" h1: {heading}");
println!("\n[3] get_attr...");
let href = page.get_attr("a", "href").await?;
println!(" 链接 href: {:?}", href);
println!("\n[4] scroll_by...");
page.scroll_by(0, 100).await?;
let sy = page.execute("window.scrollY").await?;
println!(" scrollY: {sy}");
page.scroll_by(0, -50).await?;
let sy2 = page.execute("window.scrollY").await?;
println!(" 回滚后: {sy2}");
println!("\n[5] keys...");
page.goto("https://www.google.com").await?;
match page.ele("textarea[name=q]").await {
Ok(el) => {
el.click().await?;
page.keys("rust language").await?;
let val = page
.execute("document.querySelector('textarea[name=q]').value")
.await?;
println!(" keys 输入: {val}");
}
Err(e) => println!(" 跳过 (Google 可能重定向): {e}"),
}
println!("\n[6] type_text (example.com)...");
page.goto("https://example.com").await?;
page.goto("https://httpbin.org/forms/post").await?;
tokio::time::sleep(std::time::Duration::from_millis(500)).await;
match page.type_text("input[name=custname]", "test user").await {
Ok(_) => {
let val = page
.execute("document.querySelector('input[name=custname]').value")
.await?;
println!(" type_text: {val}");
}
Err(e) => println!(" 跳过: {e}"),
}
println!("\n[7] wait_for_navigation...");
page.goto("https://example.com").await?;
let url = page.url().await?;
println!(" URL 包含 'example': {}", url.contains("example"));
println!("\n=== ✅ 全部新增 API 验证通过! ===");
Ok(())
}