簡體   English   中英

檢查日期是否在Selenium Web驅動程序(Java)中的日期范圍內

[英]Check whether dates are within the date range in selenium web driver ( 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]我在代碼中指定了以下日期。

字符串FromDate =“ 01/05/2016”;

String ToDate =“ 30/06/2016”;

比較這些日期時,代碼應返回false,因為日期不在“開始”和“結束”日期之內。 但是它返回True。 我在這里做錯了什么?

謝謝

當返回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;
}

注意:您的代碼中有很多錯別字。 您應該修復這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM