Календарь Selenium: Выборы по месяцам и датам: Что я делаю не так - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь выбрать месяцы и даты из календаря (www.booking.com) для практических целей, но не могу выбрать месяц, если он отображается на левой панели.Возможно, я что-то упустил.Кто-нибудь может дать мне подсказку?или сделать помощь, это будет высоко ценится.Заранее спасибо.

Мой код:

   public void calendar() throws InterruptedException {


        String selectDate = "6/11/2020";
        Date d = new Date(selectDate);

        SimpleDateFormat years = new SimpleDateFormat("yyyy");
        SimpleDateFormat months = new SimpleDateFormat("MMMM");
        SimpleDateFormat days = new SimpleDateFormat("d");
        String year = years.format(d);
        String month = months.format(d);
        String day = days.format(d);
        String gap = " ";
        String search = month + gap + year;


        while (!driver.findElement(By.xpath("//div[@class='xp-calendar']/div/div/div/div/*[contains(@class,'bui-calendar__month')]")).getText().equalsIgnoreCase(search)) {
            Thread.sleep(1000);
            driver.findElement(By.xpath("//div[@class='xp-calendar']/div/div/div[2]")).click();
        }


        int coutDays = driver.findElements(By.xpath("//div[@class='xp-calendar']/div/div/div/div/table/tbody/tr/td")).size();

        for (int i = 0; i < coutDays; i++) {
            String searchingDay = driver.findElements(By.xpath("//div[@class='xp-calendar']/div/div/div/div/table/tbody/tr/td")).get(i).getText();
            if (searchingDay.equalsIgnoreCase(day)) {
                Thread.sleep(1000);
                driver.findElements(By.xpath("//div[@class='xp-calendar']/div/div/div/div/table/tbody/tr/td")).get(i).click();
                break;
            }

        }

Ответы [ 2 ]

1 голос
/ 08 марта 2019

вы можете использовать css для выбора календарной даты.

driver.findElement(By.cssSelector("td[data-date='2019-03-21']")).click();

Убедитесь, что вы передаете дату в формате "ГГГГ-ММ-ДД".

Вот код, еслисначала вы хотите попробовать в консоли.

document.querySelector('td[data-date="2019-03-21"]').click()

Вам не нужно открывать средство выбора даты, просто перейдите на страницу и запустите приведенное выше.

0 голосов
/ 09 марта 2019

Правильный код:

String date = "10-June 2020";
String splitter[]= date.split("-");
String checkInMonth_Year = splitter[1];
String checkInDay = splitter[0];


List<WebElement> a = driver.findElements(By.xpath("//div[@class='bui-calendar']/div/div/div/div"));

for (int i=0; i<a.size(); i++)
{
    System.out.println(a.get(i).getText());
    if (a.get(i).getText().equals(checkInMonth_Year))
    {
        List<WebElement> days = driver.findElements(By.xpath("//div[@class='bui-calendar']/div/div/div["+(i+1)+"]/table/tbody/tr/td[@class='bui-calendar__date']"));
        for (WebElement d:days)
        {
            if (d.getText().equals(checkInDay))
            {
                d.click();
                return;
            }
        }


    }
}
pauseFor1Sec();
driver.findElement(By.xpath("//div[contains(@class,'bui-calendar__control bui-calendar__control--next')]")).click();
calendar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...