use fantoccini::{ClientBuilder, Locator};
use std::time::Duration;
use tokio::time::sleep;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ClientBuilder::native()
.connect("http://localhost:4444")
.await?;
client.goto("https://www.rust-lang.org/").await?;
let button = client
.wait()
.for_element(Locator::Css(
r#"a.button-download[href="/learn/get-started"]"#,
))
.await?;
button.click().await?;
let button = r#"//a[@class="button button-secondary" and @href="https://play.rust-lang.org/"]"#;
let button = client.wait().for_element(Locator::XPath(button)).await?;
button.click().await?;
let code_area = client
.wait()
.for_element(Locator::Css(".ace_text-input"))
.await?;
code_area.send_keys("// Hello from Fantoccini\n").await?;
let button = r#"//button[.='Run']"#;
let button = client.wait().for_element(Locator::XPath(button)).await?;
button.click().await?;
sleep(Duration::from_millis(6000)).await;
client.close().await?;
Ok(())
}