use drission::prelude::*;
#[tokio::main]
async fn main() -> drission::Result<()> {
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| "warn".into()),
)
.init();
let page = Page::headless().await?;
page.get("https://example.com").await?;
page.run_js(
"document.body.innerHTML = '<input id=\"kw\" style=\"width:300px;height:40px\">' + \
'<button id=\"go\" style=\"width:120px;height:40px\">go</button>'; \
document.getElementById('go').onclick = () => { \
window.__result = document.getElementById('kw').value; }; true",
)
.await?;
println!("[exists] #kw 存在? {}", page.exists("#kw").await?);
println!("[输入] page.input(\"#kw\", \"hello drission\")");
page.input("#kw", "hello drission").await?;
let typed = page.ele("#kw").await?.value().await?;
println!(" 输入框当前 value = {typed:?}");
println!("[点击] page.click(\"#go\")");
page.click("#go").await?;
let result = page.run_js("window.__result").await?;
println!(" 按钮回调读到的值 = {result}");
let ok = result.as_str() == Some("hello drission");
println!(
"\n{}",
if ok {
"✅ 输入+点击 验证通过"
} else {
"❌ 验证失败"
}
);
page.quit().await?;
if ok { Ok(()) } else { std::process::exit(1) }
}