我正在尝试从网页中选择一个日期,即生日。当我点击日历图标时,会打开一个带有日历的新浏览器窗口,它默认显示当前日期。选择月份和年份没有下拉菜单。月份和年份显示为标签。 (例如,2016年1月)。页面中有4个链接<<,<导航回来,然后>,>>向前导航。
这就是问题所在。 (对于其他人来说,这可能很简单)。我想选择1983年6月11日的日期。我能够回到1983年1月。但是现在,我想要去1983年6月并选择日期11,这是没有发生的。下面是代码。请注意,我没有使用日期选择器选项。
boolean t2=false;
for(int i=0;i<50;i++)
{
//To check if the year is 1983
try {
driver.findElement(By.xpath("//*[contains(text(),'1983')]"));
try{
driver.findElement(By.xpath("//*[contains(text(),'June')]"));
t2=true;
break;
}
catch (Exception e)
{
WebElement temp3 = driver.findElement(By.xpath("//img[@src='images/next.gif']"));
temp3.click();
}
}
catch (Exception e) {
WebElement temp2 = driver.findElement(By.xpath("//img[@src='images/prev_year.gif']"));
temp2.click();
}
}
答案 0 :(得分:1)
我讨价还价,你的异常处理掩盖了一个微妙的问题,因此你无法确定根本原因。原因是因为您正在捕获发生的任何异常(根据您的catch(Exception e)语句)。如果发生异常是因为您认为正确发生了xpath无法找到下一个按钮怎么办?你永远都不会知道你何时捕获异常。您声明点击没有发生,但是什么/不会发生?有什么错误吗?
我建议重新处理如下所示的处理(自由格式伪代码),如果问题仍然存在,您会下注,然后您的堆栈跟踪将指向正确的方向。
boolean t2=false;
boolean correctYearIsPresent = false;
boolean correctMonthIsPresent = false;
do {
//Using the plural findElements here because a "no elements" condition
//will not yield an Exception like the singular method will. The
//list size will simply be 0 instead. If list is >0, element(s) was located.
if (driver.findElements(By.xpath("//*[contains(text(),'1983')]")).size > 0)
{
correctYearIsPresent = true;
}
else
{
driver.findElement(By.xpath("//img[@src='images/prev_year.gif']")).click();
}
while(false == correctYearIsPresent);
do {
if (driver.findElements(By.xpath("//*[contains(text(),'June')]")).size > 0)
{
correctMonthIsPresent = true;
}
else
{
driver.findElement(By.xpath("//img[@src='images/next.gif']")).click();
}
while(false == correctMonthIsPresent);