2017-09-18 1 views
1

Ich habe eine Webtabelle auf 50 Seiten getrennt, 20 Datensätze pro Seite. Müssen Sie es gegen SQL Db überprüfen.Vergleichen Sie Web-und DB-Tabellen: Code überspringt DB-Datensätze

Seiten werden als Links im unteren Teil des Tabelle wie folgt dargestellt:

enter image description here

Nun klickt mein Code nächste Seite (aktuelle Seite + 1) korrekt und überprüft die Seiten 1 ohne Probleme 10. Aber wenn es auf den letzten Link (...) klickt und auf Seite 11 geht, überspringt es 20 Datensätze aus der DB-Tabelle und startet die Überprüfung des Datensatzes 201 von der Webtabelle mit dem Datensatz 221 aus der DB. Was ist daran falsch? Hier

ist der Code, den ich habe:

set PagesLink=description.Create 
PagesLink("micclass").Value = "Link" 
PagesLink("html tag").Value = "A" 

Do Until DBMaintenanceRS.EOF 
Set PagesCollection = .WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").ChildObjects(PagesLink) 'Get links to pages. 10 links to pages are showed in bottom of table. 

print PagesCollection.Count 

For pc = 0 To PagesCollection.Count-1 'start pages loop 

For rc = 2 to .WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").RowCount-1 'start table rows loop 
     For cc = 2 To .WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").ColumnCount(1) 'start table columns loop 
      wCell = .WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").GetCellData(rc, cc) 
      dbCell = DBMa 

intenanceRS.Fields(cc-2) 
        If trim(dbCell) = trim(wCell) Then 
         Print "Pass" 
        Else 
         print "FAIL::: ID="&.WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").GetCellData(rc, 2)&"-Column='"&.WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").GetCellData(1, cc)&"'-Value="&wCell&"-=-VS DB: "&dbCell 
        End If 

      Next 

      cc="" 
      wcell="" 
      dbcell="" 
      DBMaintenanceRS.MoveNext 
     Next 
    rc="" 
    print pc&"-=-"& PagesCollection(pc).GetROProperty("innertext") 

    If pc=0 Then 
     If NOT(PagesCollection(pc).GetROPRoperty("innertext")="...") Then 
      PagesCollection(pc).Click 
     End If 
Else 
    PagesCollection(pc).Click 
End If 
.Sync 
wait 1 

Set PagesCollection = .WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").ChildObjects(PagesLink) 
Next 
print "Next 10 pages" 
pc=0 
Set PagesCollection = .WbfGrid("html tag:=TABLE","html id:=cphBody_GridView1").ChildObjects(PagesLink) 
print DBMaintenanceRS.Fields(0) 
Loop 
+1

Sie haben 3 For-Schleifen, die ineinander verschachtelt sind. Wenn Sie auf "..." klicken, behandelt Ihr Code diese als neue Seite, aber ohne Objekt-Zeilenzählung gibt es nichts, was Sie mit den DB-Daten vergleichen könnten, sodass diese 10 Datensätze übersprungen werden. – Dave

+0

irgendein Vorschlag, wie man das vermeidet? – Salek

+0

@Salek Wenn Sie auf den Link '...' klicken, was passiert? Ist der Link für die Seiten 1 bis 10 noch sichtbar? Oder wir haben nur die Links von 10-20 gefolgt von '...' sichtbar? – Gurman

Antwort

0

Ihre Zeilen Zählvariable (rc) zählt die Zeilen global, aber die Web-Seite enthält nur die aktuellen Fenster von Reihen (21..40 für Beispiel) so, was Sie von Zeile 21 denken, ist eigentlich die erste Zeile des aktuellen WbfGrid.

Sie benötigen separate Zähler für DB-Zeilen und Zeilen.

+0

irgendein Vorschlag, wie man das vermeidet? – Salek

+0

@Salek haben zwei separate Variablen und Null nach Klick auf '...' – Motti