检查日期是否在selenium web驱动程序(Java)的日期范围内

问题描述:

在我的网站中,我可以选择一个日期范围并列出日期范围内的所有交易。我的测试用例是验证列出的交易日期是否在选定的日期范围内。检查日期是否在selenium web驱动程序(Java)的日期范围内

这是我的代码。我把所有的交易日期都放到一个LinkedList中。 Comp_Dates方法将比较实际日期在'From'和'To'日期之内。 问题是此代码将始终返回True。我已经改变了FromDate和ToDate来测试错误情况,但是仍然代码将返回True。

你能帮忙吗?这段代码有什么问题?

//Set From Date 
     driver.findElement(By.id("ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_dtDateFrom_txtDate")).sendKeys(Keys.chord(Keys.CONTROL, "a"),"01/03/2016"); 
     //Set To date 
     driver.findElement(By.id("ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_dtDateTo_txtDate")).sendKeys(Keys.chord(Keys.CONTROL, "a"),"30/04/2016"); 
      driver.findElement(By.id("ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_btnList")).click(); 


List<WebElement> Date = 
driver.findElements(By.xpath(".//* [@id='ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_stxOutstandingTransactions_gvOSTransactions']/tbody/tr[*]/td[1]")); 

List<String> Dates = new LinkedList<String>(); 

for(int i=0;i<Date.size();i++)  
     {  
      Dates.add(Date.get(i).getText());  
      System.out.println(Dates); 
     }  

     boolean result = comp_Dates(Dates); 

     if (result=true) 
     { 
     System.out.println(result + ", Address are within the range"); 
     } 
     else 
     { 
     System.out.println(result + ", Addresses are not within the range. Test Case Failed"); 
     } 
    } 

     private static boolean comp_Dates(List<String> Dates) { 
      try 
      { 
      SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy"); 
       //Date date = fmt.parse("2013-05-06"); 
       String FromDate= "01/05/2016"; 
       String ToDate= "30/06/2016"; 
       java.util.Date Fdate =fmt.parse(FromDate); 
       java.util.Date Tdate =fmt.parse(ToDate); 

      for(String e : Dates) 
       { 
        java.util.Date ActualDate = fmt.parse(e);  
       if (ActualDate.compareTo(Fdate)>=0 & ActualDate.compareTo(Tdate)<=0); 
        { 
         return true; 

        } 

       } 
      } 
      catch (Exception ex){ 
        System.out.println(ex); 
       } 
      return false; 

      } 

      } 

在链表交易日期为[18/04/2016,14/04/2016,13/04/2016] 我已经如下日期指定在代码中。

String FromDate =“01/05/2016”;

String ToDate =“30/06/2016”;

当比较这些日期时,代码应该返回false,因为日期不会落在From和To日期中。但它返回True。我在这里做错了什么?

感谢

+1

'if(result = true)'可能是罪魁祸首 – Shahid

当你返回true,则退出时,它创建于范围内的日期的功能。因此它不会检查列表中的所有日期。

如果你要检查所有日期,适当comp_Dates方法可能是:

//Set From Date 
    driver.findElement(By.id("ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_dtDateFrom_txtDate")).sendKeys(Keys.chord(Keys.CONTROL, "a"), "01/03/2016"); 
    //Set To date 
    driver.findElement(By.id("ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_dtDateTo_txtDate")).sendKeys(Keys.chord(Keys.CONTROL, "a"), "30/04/2016"); 
    driver.findElement(By.id("ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_btnList")).click(); 


    List<WebElement> Date = 
      driver.findElements(By.xpath(".//* [@id='ctl00_ContentPlaceHolderMain_container_container_Block_172_tabPanelMyAccounts_stxOutstandingTransactions_gvOSTransactions']/tbody/tr[*]/td[1]")); 


    for (int i = 0; i < Date.size(); i++) { 
     String date = Date.get(i).getText(); 
     boolean result = comp_Dates(date); 

     if (result) { 
      System.out.println(result + ", Address are within the range"); 
     } else { 
      System.out.println(result + ", Addresses are not within the range. Test Case Failed"); 
     } 
    } 

private static boolean comp_Dates(String date) { 
    try { 
     SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy"); 

     String FromDate = "01/05/2016"; 
     String ToDate = "30/06/2016"; 

     java.util.Date Fdate = fmt.parse(FromDate); 
     java.util.Date Tdate = fmt.parse(ToDate); 
     java.util.Date ActualDate = fmt.parse(date); 

     if (ActualDate.compareTo(Fdate) >= 0 && ActualDate.compareTo(Tdate) <= 0) { 
      return true; 
     } 
    } catch (Exception ex) { 
     System.out.println(ex); 
    } 
    return false; 
} 

N.B:有在你的代码中的许多错别字。你应该修复这些。

+0

谢谢Shahid的回复。我已经编辑了上面的代码,但它仍然返回true。 – Prasa

+0

希望编辑后的代码适合你。 – Shahid

+0

仍然不起作用。始终返回true。输出:真,日期在范围内 true,日期在范围内 true,日期在范围内 PASSED:SelectDateRange =================== ============================ 默认测试 测试运行:1,失败:0,跳过:0 ===== ========================================== – Prasa