use thirtyfour::prelude::*;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let driver = WebDriver::managed(DesiredCapabilities::chrome()).await?;
driver.goto("https://wikipedia.org").await?;
let elem_form = driver.query(By::Id("search-form")).nowait().single().await?;
let elem_text = elem_form
.query(By::Css("thiswont.match"))
.or(By::Id("searchInput"))
.desc("search input")
.first()
.await?;
elem_text.send_keys("selenium").await?;
let elem_button =
elem_form.query(By::Css("button[type='submit']")).desc("search button").first().await?;
elem_button.click().await?;
elem_button.wait_until().error("Timed out waiting for button to become stale").stale().await?;
driver.query(By::Css("button[type='submit']")).nowait().not_exists().await?;
driver.query(By::ClassName("firstHeading")).first().await?;
assert_eq!(driver.title().await?, "Selenium - Wikipedia");
driver.quit().await?;
Ok(())
}