-
Notifications
You must be signed in to change notification settings - Fork 10
Open
Description
My current Cargo.toml:
[package]
name = "airbnb"
version = "0.1.0"
edition = "2021"
[dependencies]
wshared = { path = "../../../../[libs]/wshared" }
csv = "1.3.0"
serde = { version = "1.0.210", features = ["derive"] }
thirtyfour = "0.34.0"
tokio = { version = "1.40.0", features = ["full"] }
url = "2.5.2"
serde_json = "1.0.132"
My chromedriver is: v130.0.6723.58-1
Target site: https://www.airbnb.com/
Your code needs an update because the latest versions for crates being used:
async fn click_choose_place(driver: &WebDriver) -> TVoidDriverResult {
let element = driver.find(By::Css(
"#react-application > div > div > div:nth-child(1) > div > div.cd56ld.dir.dir-ltr > div.h1uz6jp0.dir.dir-ltr > div > div > div > header > div > div.c1ntbm87.dir.dir-ltr"
)).await?;
// println!("Element [{:?}] is crickable? {}", element.class_name().await?, element.is_clickable().await?);
element.click().await?;
Ok(())
}
async fn write_place(driver: &WebDriver, place: &str) -> TVoidDriverResult {
let input = driver.find(By::Css("#bigsearch-query-location-input")).await?;
// println!("Input [{:?}] is crickable? {}", input.id().await?, input.is_clickable().await?);
input.wait_until().clickable().await?;
input.send_keys(place).await?;
Ok(())
}
async fn click_search_button(driver: &WebDriver) -> TVoidDriverResult {
let selector = "#search-tabpanel > div > div.c111bvlt.dir.dir-ltr > div.c1ddhymz.dir.dir-ltr > div.snd2ne0.dir.dir-ltr > button";
let button = driver.find(By::Css(selector)).await?;
let mut span_xy = button.find(By::Css("span.t1ng71ne.dir.dir-ltr > span")).await?;
let ret = driver.execute(
r#"
arguments[0].style.cssText += arguments[1];
return arguments[0];
"#,
vec![span_xy.to_json()?, serde_json::to_value(" --mouse-x: 46.8359375; --mouse-y: 2.083333333333333;")?],
).await?;
span_xy = ret.element()?;
println!(" -> span_xy: {:?}", span_xy.class_name().await?);
println!(" -> span_xy: {:?}", span_xy.attr("style").await?);
println!("Button [{:?}] is crickable? {}", button.class_name().await?, button.is_clickable().await?);
button.click().await?;
Ok(())
}
After running click_search_button
method it is displaying this page:
Firstly I thought it was because there is a span recollecting the position of cursor over button so I programmatically modified the style of that span, but same result.
How to get the expected result page?
Metadata
Metadata
Assignees
Labels
No labels