Код выбора даты не работает для веб-сайта Yatra

#selenium #selenium-chromedriver

Вопрос:

Я попробовал приведенный ниже код, теперь месяц выбран идеально, но дата не выбрана. Может ли кто-нибудь помочь мне понять, чего мне не хватает.

 driver.findElement(By.id("BE_flight_origin_date")).click()  ;           
        Thread.sleep(2000);
        
        WebElement element = driver.findElement(By.xpath("//div[@class='month-title']"));
        JavascriptExecutor js = (JavascriptExecutor) driver;
             
        while(!element.getText().contains(" July' 21 "))
        js.executeScript("arguments[0].scrollIntoView(true);", element);
        Thread.sleep(500); 
        List<WebElement> getCalendardays = driver.findElements(By.xpath("//tbody[@class='BE_flight_origin_date']//tr//td"));
        for(int i=0;i<getCalendardays.size();i  )
        {
            String sdays = getCalendardays.get(i).getText();
            System.out.println(sdays);
            if(sdays.contentEquals(" 14 "))
            {
                getCalendardays.get(i).click();
                System.out.println("The date has been clicked");
                break;
            }
        }   
 

Комментарии:

1. На что похож этот сайт? Не могли бы вы поделиться HTML, пожалуйста?

2. Сайт является yatra.com . Это туристический сайт, и я не могу выбрать дату вылета, застряв в нем.

Ответ №1:

На самом деле это гораздо проще, чем вы думаете. Каждая из дат может быть идентифицирована по идентификатору, который на самом деле является датой в формате дд/ММ/ГГГГ. Создайте метод, подобный этому, и вызывайте его каждый раз.

 import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class AppTest {
    public WebDriver driver;

    

    @Test
    public void testYatra() throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "C:\drivers\chromedriver.exe");

        driver = new ChromeDriver();

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.get("https://www.yatra.com/");
        // Launch Website
        driver.findElement(By.id("BE_flight_origin_date")).click();
        Thread.sleep(2000);

        clickOnDate("14/07/2021");

    }

    public void clickOnDate(String id) {

        WebElement date = driver.findElement(By.id(id));

        JavascriptExecutor executor = (JavascriptExecutor) driver;
        executor.executeScript("arguments[0].click();", date);

    }

}
 

Комментарии:

1. Я никогда не думал, что это будет так просто. Огромное спасибо