use zendriver::Browser;
const FORM_HTML: &str = "data:text/html,\
<!doctype html><html><body>\
<form id='f' onsubmit='window.submitted=true;return false'>\
<input id='user' name='user' />\
<input id='pass' name='pass' type='password' />\
<button id='go' type='submit'>Submit</button>\
</form></body></html>";
#[tokio::main]
#[allow(clippy::result_large_err)] async fn main() -> zendriver::Result<()> {
tracing_subscriber::fmt::init();
let browser = Browser::builder().headless(true).launch().await?;
let tab = browser.main_tab();
tab.goto(FORM_HTML).await?;
tab.wait_for_load().await?;
let user = tab.find().css("#user").one().await?;
user.type_text("rin").await?;
let pass = tab.find().css("#pass").one().await?;
pass.type_text("hunter2").await?;
let go = tab.find().css("#go").one().await?;
go.click().await?;
let user_val: String = tab
.evaluate_main("document.getElementById('user').value")
.await?;
let submitted: bool = tab.evaluate_main("window.submitted === true").await?;
println!("user field = {user_val:?}, submitted = {submitted}");
browser.close().await?;
Ok(())
}