Skip to content

AirBnb is not displaying results page expected  #3

@warcayac

Description

@warcayac

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:
Screenshot_20241022_165621

instead of:
Screenshot_20241022_170008

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions