Prasa
Prasa

Reputation: 5

Check whether dates are within the date range in selenium web driver ( Java)

In my website, I can select a date range and list all the transactions within the date range. My test case is to verify whether listed transactions dates are within the selected date range .

This is my code. I get all the transaction dates into a LinkedList. Comp_Dates method will compare the actual date is within the ‘From’ and ‘To’ dates. The problem is this code will always return True. I have changed the FromDate and ToDate to test the false scenario, But still code will return True.

Can you please help? What’s the problem in this code?

//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;

             }

            }

Transactions dates in Linked list is [18/04/2016, 14/04/2016, 13/04/2016] I have specified dates as below in the code.

String FromDate= "01/05/2016";

String ToDate= "30/06/2016";

When compare these dates, code should return false as dates doesn’t fall on within From and To dates. But it returns True. What am I doing wrong here?

Thanks

Upvotes: 0

Views: 8349

Answers (1)

Shahid
Shahid

Reputation: 2330

When you are returning true, it will exit the function whenever it founds a date in the range. Thus it would not check for all dates in the list.

If you want to check for all dates, proper comp_Dates method could be:

    //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: There are many typos in your code. You should fix these.

Upvotes: 0

Related Questions