Как выбрать дату из календаря с помощью селена webdriver - PullRequest
2 голосов
/ 11 июля 2019

Я новичок в Selenium webdriver.Я использую Java язык программирования.

Моя проблема в том, что я не могу вызвать элемент календаря и выбрать внутри него дату.

Вот ссылка:

https://www.veltra.com/en/asia/malaysia/kuala_lumpur/a/139387

Любая помощь очень ценится.

List<WebElement> allDates=driver.findElements(By.xpath("//table[@class='ui-datepicker-calendar']//td"));

        for(WebElement selectDate:allDates)
        {       
            String date=selectDate.getText();

            if(date.equalsIgnoreCase("31"))
            {
                selectDate.click();
                break;
            }

        }

То, что я планировал, после нажатия кнопки «Забронировать сейчас», я хочу выбрать 31st July в календаре.Дата будет отображаться в текстовом поле.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Текст активных дат - это не просто день, он также содержит цену. Например, на 31 июля текст: 31\nUSD 266.67.

Вы можете использовать startsWith()

if (date.startsWith("31")) {
    selectDate.click();
    break;
}

Или используйте локатор, который указывает на саму дату

By.xpath("//table[@class='ui-datepicker-calendar']//td//span")
0 голосов
/ 11 июля 2019

Чтобы выбрать дату 31 из каландра для первого элемента, вам нужно вызвать WebDriverWait для elementToBeClickable(), и вы можете использовать следующие Стратегии локатора :

  • Блок кода:

    WebDriver driver = new ChromeDriver(options);
    driver.get("https://www.veltra.com/en/asia/malaysia/kuala_lumpur/a/139387");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='hltitle clearfix fclear price_note_wrapper']//following::a[2]"))).click();
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='hltitle clearfix fclear price_note_wrapper']//following::a[starts-with(@id, 'book_now_btn_')][1]//following::table[1]//input[starts-with(@name, 'data')]"))).click();
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//table[@class='ui-datepicker-calendar']//span[text()='31']"))).click();
    
  • Снимок браузера:

31_07_2019

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