我正在尝试从日期选择器中选择未来日期,但无法理解如何执行此操作。
我需要提前14天选择日期,但日期选择器一次只能显示一个日历月。图片已上传至以下链接。
提前14天选择未来日期的逻辑是什么?
=============================================== ==================
我使用firebug更深入地查看了元素,将datepicker划分为行类。下面是datepicker xml输出的导出:
<tr class="w27"> <tr class="w28"> <td id="startCalendarDiv_t_cell14" class="calcell wd0 d10 previous calcellleft">10</td> <td id="startCalendarDiv_t_cell15" class="calcell wd1 d11 previous">11</td> <td id="startCalendarDiv_t_cell16" class="calcell wd2 d12 previous">12</td> <td id="startCalendarDiv_t_cell17" class="calcell wd3 d13 previous">13</td> <td id="startCalendarDiv_t_cell18" class="calcell wd4 d14 previous">14</td> <td id="startCalendarDiv_t_cell19" class="calcell wd5 d15 today selected selectable"> <a class="selector" href="#">15</a> </td> <td id="startCalendarDiv_t_cell20" class="calcell wd6 d16 selectable calcellright"> </tr> <tr class="w29">
<td id="startCalendarDiv_t_cell21" class="calcell wd0 d17 selectable calcellleft">
<td id="startCalendarDiv_t_cell22" class="calcell wd1 d18 selectable">
<td id="startCalendarDiv_t_cell23" class="calcell wd2 d19 selectable">
<td id="startCalendarDiv_t_cell24" class="calcell wd3 d20 selectable">
<td id="startCalendarDiv_t_cell25" class="calcell wd4 d21 selectable">
<td id="startCalendarDiv_t_cell26" class="calcell wd5 d22 selectable">
<td id="startCalendarDiv_t_cell27" class="calcell wd6 d23 selectable calcellright">
</tr>
<tr class="w30">
如果查看今天的日期,它具有以下属性:
<td id="startCalendarDiv_t_cell19" class="calcell wd5 d15 today selected selectable">
我的想法是按类查找元素,其中包含“今天”,然后识别ID,添加14天并选择它。不知道如何完成它。
此外,'findElement'无效。我写的'findElement'代码是:
//looking for the class
driver.FindElement(By.ClassName("calcell wd5 d15 today selected selectable"));
有任何线索该做什么?
答案 0 :(得分:1)
Answer by Shekhar是正确的,但是使用旧类并且工作太难。
java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和&amp; java.text.SimpleDateFormat
。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6&amp; ThreeTen-Backport中的7,并在ThreeTenABP中进一步适应Android。
LocalDate
LocalDate
类表示没有时间且没有时区的仅限日期的值。
LocalDate localDate = LocalDate.of( 2016 , 7 , 13 );
LocalDate twoWeeksLater = localDate.plusWeeks( 2 );
如果您的日期选择器窗口小部件尚未更新以使用java.time
类型,则可以询问LocalDate
对象的部件。
int year = localDate.getYear();
int month = localDate.getMonthValue(); // The method `getMonth` returns an object from the `Month` enum rather than an integer.
int dayOfMonth = localDate.getDayOfMonth();
答案 1 :(得分:0)
逻辑是:
-------------------新信息后更新------------------------ ---
如果类包含空格char,则不能使用By.ClassName。相反,要在类中找到“今天”,请使用Xpath:
driver.FindElement(By.XPath("//td[contains(@class,'today')]"));
答案 2 :(得分:0)
这只是Java代码,与Calendar Picker无关。
只需在代码中使用此脚本,然后使用“新日期”即可。使用SendKeys()输入日期框的字符串。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date = new Date();
String todaysDate = dateFormat.format(date);
System.out.println(todaysDate);
String month=todaysDate.substring(0,2);
String day=todaysDate.substring(3,5);
int monthValue=Integer.parseInt(month);
int dayValue=Integer.parseInt(day);
if(dayValue+14>31)
{
int temp= 31-dayValue;
dayValue=14-temp;
monthValue=monthValue+1;
}
else
{
dayValue=dayValue+14;
}
String newDay = monthValue+"/"+dayValue+"/"+"2016";
System.out.println(newDay);
driver.findElement(by.xpath(DateBox))的SendKeys(newDay);