使用 Selenium WebDriver 处理日期选择器
Handling Date picker using Selenium WebDriver
我的网页中有两个日期选择器,分别是开始日期和结束日期。我需要点击两个日期,但是当我搜索元素时,会调用相同的元素。但是有一个独特的元素 name.How 我可以调用这些元素吗?
日期选择器 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="...">
首先,img
标签不是 input
标签的子标签,而是紧随其后的标签 - 兄弟标签。此外,在您的第 5 次尝试中,您试图引用 img
的 alt
属性,因此您应该写 @alt
而不是 alt
.
我建议使用 class
属性而不是 alt
,如下所示:
1) 开始日期
(.//*[@id='courseStartDate']/following-sibling::img[@class='ui-datepicker-trigger'])[1]
2) 结束日期
(.//*[@id='courseEndDate']/following-sibling::img[@class='ui-datepicker-trigger'])[1]
查看 here 了解更多关于 following-siblings 和 xpath 轴的一般信息。
您可以使用 List
:
处理 日期选择器
- 获取年、月和日table的所有值用于
List
- 循环并将
List
的元素与输入进行比较:年、月 和 天
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.");
}
}
详细教程见以下博客-post:
Selenium JAVA Automation Tips & Tricks
我的网页中有两个日期选择器,分别是开始日期和结束日期。我需要点击两个日期,但是当我搜索元素时,会调用相同的元素。但是有一个独特的元素 name.How 我可以调用这些元素吗?
日期选择器 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="...">
首先,img
标签不是 input
标签的子标签,而是紧随其后的标签 - 兄弟标签。此外,在您的第 5 次尝试中,您试图引用 img
的 alt
属性,因此您应该写 @alt
而不是 alt
.
我建议使用 class
属性而不是 alt
,如下所示:
1) 开始日期
(.//*[@id='courseStartDate']/following-sibling::img[@class='ui-datepicker-trigger'])[1]
2) 结束日期
(.//*[@id='courseEndDate']/following-sibling::img[@class='ui-datepicker-trigger'])[1]
查看 here 了解更多关于 following-siblings 和 xpath 轴的一般信息。
您可以使用 List
:
- 获取年、月和日table的所有值用于
List
- 循环并将
List
的元素与输入进行比较:年、月 和 天
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.");
}
}
详细教程见以下博客-post: Selenium JAVA Automation Tips & Tricks