[英]Selenium Calendar: Months and Dates Selections: What i'm doing wrong
我試圖出於練習目的從日歷(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;
}
}
您可以使用CSS選擇日歷日期。
driver.findElement(By.cssSelector("td[data-date='2019-03-21']")).click();
確保以“ YYYY-MM-DD”格式傳遞日期。
如果您想首先在控制台中嘗試,請使用以下代碼。
document.querySelector('td[data-date="2019-03-21"]').click()
您不必打開日期選擇器,只需導航到頁面並運行上面的命令即可。
正確的代碼:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.