2017-11-10 3 views
1

ich eine Web-Tabelle haben Werte zu überprüfen:
Überprüfen Sie mehrere Bereiche in webtable mit Selen C#

ID   Datum                    %   Monat
30-10- 2017       JAN
    18-10-2017       FEBRUAR
    01-11-2017       MAR
    22 -10-2017       April

Ich möchte
1. Datum Werte überprüfen, sind innerhalb der Reichweite '15 -10-2107' bis '15 -11-2017'
2.% Bereich zwischen 50 -90
3. Monat Bereich zwischen Jan - Mai
Ich verwende Selen C# zur Verifikation. Was wird der beste Ansatz sein?

Antwort

1

ein Datum Um zu testen, fällt innerhalb eines bestimmten Bereichs, können Sie ein Datetime-Objekt konstruieren und behaupten, dass seine in einem 2 Satz Datetime Bereiche:

var start = DateTime.ParseExact("15-10-2017", "dd-mm-yyyy", System.Globalization.CultureInfo.InvariantCulture); 
var end = DateTime.ParseExact("15-11-2017", "dd-mm-yyyy", System.Globalization.CultureInfo.InvariantCulture); 
var dateFromtable = DateTime.ParseExact([DATE_FROM_TABLE], "dd-mm-yyyy", System.Globalization.CultureInfo.InvariantCulture); 

Assert.That(dateFromtable >= start && dateFromtable < end, Is.True); 

Ihr% einen einfachen int Guss Um zu testen, und ähnlichen überprüfen zu dem oben angegebenen Datum.

kann Ihr Monat Check-in vielen verschiedenen Arten erfolgen, die einfachste direkteste glaube ich, wäre eine Liste zu erstellen, die

var acceptableMonths = new[] {"Jan", "Feb", "Mar", "Apr", "May"}; //Assuming may is included in the list 
Assert.That(acceptableMonths.Contains([MONTH_READ_FROM_TABLE]), Is.True) 
+0

Gibt es eine andere Art und Weise als Assert.That, z.B. Verwenden Sie andernfalls, da ich die Ergebnisse zu meinen Berichten auch hinzufügen muss ... – user3378783

+0

Das erste Argument in allen 'Assert.That' gibt tatsächlich ein bool obj zurück. So können Sie tun, wenn (dateFromtable> = Start && dateFromtable

1
  1. Verwendung XPath akzeptablen Monate enthält zunächst den Datensatz zu verengen (die 2rd Filter, so dass Sie alle Zeilen der Tabelle)

    string xpath = '//table//td[3][number(text())>=50 and number(text())<=90]'; 
    first_filter_rows = driver.FindElements(By.xpath(xpath)); 
    
  2. Verwendung Monat Bereich tun keine Notwendigkeit, eine Schleife über die first_filter_rows

    Regex reg = new Regex("Jan|Feb|Mar|Apr|May"); 
    ArrayList second_filter_rows = new ArrayLis(); 
    foreach(row in first_filter_rows) { 
    string month = row.FindElement(By.xpaht('./td[4]')).text; 
    if(reg.IsMatch(month)) { 
    second_filter_rows.add(row); 
    } 
    } 
    
  3. Verwendung Datumsbereich machen die 3. Filter auf den second_filter_rows

    var start = DateTime.ParseExact("15-10-2017", "dd-mm-yyyy", 
         System.Globalization.CultureInfo.InvariantCulture);` 
    
        var end = DateTime.ParseExact("15-11-2017", "dd-mm-yyyy", 
         System.Globalization.CultureInfo.InvariantCulture); 
    
        ArrayList third_filter_rows = new ArrayLis(); 
    
        foreach(row in second_filter_rows) { 
         string date = row.FindElement(By.xpaht('./td[2]')).text; 
         var dateFromtable = DateTime.ParseExact(date, "dd-mm-yyyy", 
        System.Globalization.CultureInfo.InvariantCulture); 
        if(dateFromtable >= start && dateFromtable < end) { 
         third_filter_rows.add(row); 
         // output to your report 
        } 
        } 
    
        Assert(third_filter_rows.length > 0, IsTrue); 
    
+0

Warum verwenden Sie zusätzliche Zitat um Ihre Code-Blöcke? Beziehen Sie sich auf Code woanders? – wp78de

+0

Die Symbolleiste des Codeblocks kann manchmal nicht wie erwartet funktionieren. – yong

Verwandte Themen