使用Selenium WebDriver处理日期选择器

时间:2015-05-14 10:58:14

标签: java selenium-webdriver

我的网页上有两个日期选择器,即开始日期和结束日期。我需要点击两个日期,但是当我搜索元素时,会调用相同的元素。但是有一个唯一的元素名称。我怎么称呼这些元素。

日期选择器1 HTML代码: -

<span>Start Date:</span>
<input id="courseStartDate" class="date-range required hasDatepicker" type="text" size="20" value="" onchange="startDateChanged()" name="courseStartDate">
<img class="ui-datepicker-trigger" src="../../images/Calender.png" alt="..." title="...">

日期选择器2 HTML代码: -

<span>End Date:</span>
<input id="courseEndDate" class="date-range required hasDatepicker" type="text" size="20" value="" onchange="endDateChanged()" name="courseEndDate">
<img class="ui-datepicker-trigger" src="../../images/Calender.png" alt="..." title="...">

2 个答案:

答案 0 :(得分:0)

首先,img标记不是input标记的子标记,而是紧随其后的标记 - 兄弟标记。此外,在您的第5次尝试中,您尝试引用alt的{​​{1}}属性,因此您应该写img而不是@alt

我建议使用alt属性而不是class,如下所示:

1)开始日期

alt

2)结束日期

(.//*[@id='courseStartDate']/following-sibling::img[@class='ui-datepicker-trigger'])[1]

一般来看看here有关跟随兄弟和xpath轴的更多信息。

答案 1 :(得分:-1)

您可以使用 List 处理日期选择器

  1. 使用 List
  2. yearmonthday 表中获取所有值
  3. 循环比较 List 的元素和输入:yearmonthday
List<WebElement> yearList = driver
   .findElement(By.xpath("/html/body/div[3]/div[3]/table/tbody"))
   .findElements(By.tagName("span"));

for (int i = 0; i < yearList.size(); i++) {
  if (yearList.get(i).getText().equalsIgnoreCase(date_dd_MM_yyyy[2])) {
    
    yearList.get(i).click();
    System.out.println("Year found successfully..");
    break;
  } else if (i == yearList.size()) {
    System.out.println("Year not found.");
  }
}

有关详细教程,请参阅以下博客文章: Selenium JAVA Automation Tips & Tricks