我是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
。日期将显示在文本框中。
答案 0 :(得分:1)
有效日期的文本不仅是日期,还包含价格。例如,对于7月31日,文本为31\nUSD 266.67
。
您可以使用startsWith()
if (date.startsWith("31")) {
selectDate.click();
break;
}
或使用指向日期本身的定位符
By.xpath("//table[@class='ui-datepicker-calendar']//td//span")
答案 1 :(得分:0)
要从日历上为第一项选择日期 31 ,您需要为elementToBeClickable()
诱导 WebDriverWait ,您可以使用以下{{3 }}:
代码块:
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();
浏览器快照: