最近在研究selenium,碰到处理日期控件的问题,尝试数种方法均无果,最后终于找到一种可以成功的一种处理方式。
整个日历控制在div中:
<input type="text" name="startDate" id="id_startdate1" size="15" maxlength="60" onfocus="assignValue(‘tr_attr_1‘);" onkeydown="return false;" onkeypress="return false;">
<img src="/images/cal.gif" width="16" height="16" border="0" alt="View Calendar" title="View Calendar">
我首先也根据网上可以直接搜到的可行的解决方案一一验证,均未果。于是自己又继续琢磨了一下午,实验出了一种可行的方案:
1.首先定位到日历控件的图片并点击
driver.findElement(By.cssSelector("img[alt=\"View Calendar\"]")).click();
2.通过‘<’ 选择上一个月(选择下一个月时类似)
driver.findElement(By.linkText("<")).click();
3.选择月份
Select select = new Select(driver.findElement(By.cssSelector("select.month")));
select.selectByVisibleText("");//填写需要具体选择的月份的值
4.选择年份
Select select = new Select(driver.findElement(By.cssSelector("select.year")));
select.selectByVisibleText("");//填写需要具体选择的年份的值
5.选择‘今天’的日期
driver.findElement(By.linkText("Today")).click();
6.选择具体的天的日期
driver.findElement(By.xpath("//tr[1]/td[1]/div")).click;//通过具体的行列信息定位到具体的天的日期