我的网页上有两个日期选择器,即开始日期和结束日期。我需要点击两个日期,但是当我搜索元素时,会调用相同的元素。但是有一个唯一的元素名称。我怎么称呼这些元素。
日期选择器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="...">
答案 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
处理日期选择器:
List
List
的元素和输入:year、month 和 dayList<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