use futures_util::StreamExt;
use thirtyfour::bidi::events::Load;
use thirtyfour::prelude::*;
#[tokio::main(flavor = "multi_thread")]
async fn main() -> WebDriverResult<()> {
let mut caps = DesiredCapabilities::chrome();
caps.set_headless()?;
caps.set_no_sandbox()?;
caps.set_disable_gpu()?;
caps.enable_bidi()?;
let driver = WebDriver::managed(caps).await?;
let bidi = driver.bidi().await?;
let status = bidi.session().status().await?;
println!("driver ready: {} ({})", status.ready, status.message);
let context = bidi.browsing_context().top_level().await?;
let mut load_events = bidi.subscribe::<Load>().await?;
let url = "data:text/html,<html><title>BiDi%20demo</title></html>";
bidi.browsing_context().navigate(context.clone(), url, None).await?;
if let Some(load) = load_events.next().await {
println!("loaded: {} (context={})", load.url, load.context);
}
let result = bidi.script().evaluate(context.clone(), "document.title", false).await?;
if let Some(value) = result.ok_value() {
println!("title: {}", value);
}
driver.quit().await
}