Как мне получить возможность прокручивать всплывающее окно с помощью Selenium Webdriver, используя JavaScript и NodeJS? - PullRequest
0 голосов
/ 03 марта 2020

неуправляемое всплывающее окно

Я пытаюсь найти места в Риме, Италия. Все идет хорошо, пока не появится всплывающее окно «Больше фильтров», и, когда я пытаюсь отфильтровать свой поиск, я не могу прокрутить вниз, чтобы проверить некоторые дополнительные характеристики. Пробовал это и с JSExecutor, и переключая фокус на всплывающее окно. Не сработало Вот код:

let webdriver = require('selenium-webdriver');
let chrome = require('selenium-webdriver/chrome');
// let moment = require('moment');
// let assert = require('assert');
const {
    By,
    Key,
    until
} = require('selenium-webdriver');

let options = new chrome.Options().addArguments('start-maximized');
let driver = new webdriver.Builder().setChromeOptions(options).forBrowser('chrome').build();

driver.manage().setTimeouts({
    pageLoad: 10000
})

driver.get('https://www.airbnb.com/');

search = async () => {
    (await driver).findElement(By.id('Koan-magic-carpet-koan-search-bar__input')).sendKeys('Rome, Italy', Key.RETURN);
    (await driver).findElement(By.xpath('//*[@id="checkin_input"]'));
    let checkInDate = await driver.wait(until.elementLocated(By.xpath('//*[@id="FMP-target"]/div/div[1]/div/div/div/div/div/div[2]/div/form/div[2]/div/div/div/div[2]/div/div/div/div/div/div[2]/div[2]/div/div[2]/div/table/tbody/tr[2]/td[1]')));
    checkInDate.click();
    let checkOutdate = await driver.wait(until.elementLocated(By.xpath('//*[@id="FMP-target"]/div/div[1]/div/div/div/div/div/div[2]/div/form/div[2]/div/div/div/div[3]/div/div/div/div/div/div[2]/div[2]/div/div[2]/div/table/tbody/tr[4]/td[7]')));
    checkOutdate.click();
    let guestPicker = await driver.wait(until.elementLocated(By.css('#lp-guestpicker')));
    guestPicker.click();
    let adult = await driver.wait(until.elementLocated(By.css('#FMP-target > div > div._ogalm0 > div > div > div > div > div > div:nth-child(2) > div > form > div:nth-child(3) > div > div._e296pg > div > div > div:nth-child(1) > div:nth-child(1) > div > div > div > div._ni9axhe > div > div._1a72ixey > button')));
    adult.click();
    adult.click();
    let kid = await driver.wait(until.elementLocated(By.css('#FMP-target > div > div._ogalm0 > div > div > div > div > div > div:nth-child(2) > div > form > div:nth-child(3) > div > div._e296pg > div > div > div:nth-child(1) > div:nth-child(2) > div > div > div > div._ni9axhe > div > div._1a72ixey > button')));;
    kid.click();
    let saveSelection = await driver.wait(until.elementLocated(By.className('_b0ybw8s')));
    saveSelection.click();
    let search = await driver.wait(until.elementLocated(By.className('_1vs0x720')));
    search.click();
}

search();


moreFilters = () => {

    let moreFilters = driver.wait(until.elementLocated(By.css('#menuItemButton-dynamicMoreFilters > button')));
    moreFilters.click();

    let extraBedrooms = driver.wait(until.elementLocated(By.css('#filterItem-stepper-min_bedrooms-0 > button:nth-child(3)')));
    for (i = 0; i < 5; i++) {
        extraBedrooms.click(i);
    }

    let pop = driver.getWindowHandle();
    driver.switchTo().window(pop);

    let element = driver.findElement(By.css('body > div:nth-child(75) > section > div > div > div._12k64q0 > div:nth-child(6) > div > div:nth-child(3) > div._cfvh61 > div > button'));

    driver.executeScript("arguments[0].scrollIntoView(true);", element);

}

moreFilters();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...