#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. Я никогда не думал, что это будет так просто. Огромное спасибо