2016-08-15 6 views
0

In meiner Website kann ich einen Datumsbereich auswählen und alle Transaktionen innerhalb des Datumsbereichs auflisten. Mein Testfall besteht darin, zu überprüfen, ob die angegebenen Transaktionsdaten innerhalb des ausgewählten Datumsbereichs liegen.Überprüfen Sie, ob die Daten im Selen Webtreiber (Java) liegen

Dies ist mein Code. Ich bekomme alle Transaktionsdaten in eine LinkedList. Die Comp_Dates-Methode vergleicht das tatsächliche Datum innerhalb der Daten 'Von' und 'Bis'. Das Problem ist, dass dieser Code immer True zurückgibt. Ich habe FromDate und ToDate geändert, um das falsche Szenario zu testen, aber der Code wird True zurückgeben.

Können Sie bitte helfen? Was ist das Problem in diesem 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; 

      } 

      } 

Transaktionen Daten in verlinkte Liste [18/04/2016, 14/04/2016, 13/04/2016] Ich habe wie in dem unten stehenden Code festgelegte Termine.

Zeichenfolge FromDate = "01/05/2016";

String ToDate = "30.06.2016";

Wenn diese Daten vergleichen, Code sollte false zurück, wie Daten einer nicht fallen innerhalb von und bis Daten. Aber es gibt True zurück. Was mache ich hier falsch?

Dank

+1

'if (result = true)' könnte der Schuldige sein – Shahid

Antwort

0

Wenn Sie wahr zurückkehren, wird es die Funktion verlassen, wenn es ein Datum im Bereich gründet. Daher würde es nicht nach allen Daten in der Liste suchen.

Wenn Sie für alle Termine, die richtige comp_Dates Methode sein könnte, um zu überprüfen:

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

NB: Es gibt viele Fehler im Code. Sie sollten diese beheben.

+0

Danke Shahid für die Antwort. Ich habe den Code wie oben bearbeitet, aber es gibt immer noch wahr zurück. – Prasa

+0

Ich hoffe, der bearbeitete Code funktioniert für Sie. – Shahid

+0

Funktioniert immer noch nicht. Immer wieder wahr. Ausgabe: true, Termine sind im Bereich wahr, Termine liegen im Bereich wahr, Termine liegen im Bereich GEFüHRT: SelectDateRange =================== ============================ Standard Test Tests laufen: 1, Fehler: 0, Springt: 0 ===== ======================================= – Prasa

Verwandte Themen