Ordinale Kennung in QTP/UFTBeispiel für Objektidentifizierung
⚡ Intelligente Zusammenfassung
Ordinale Kennung in QTP/UFT ist der Tie-Breaker. UFT Wird angewendet, wenn obligatorische und unterstützende Eigenschaften noch auf mehr als ein Objekt zutreffen, wobei anhand der Werte für Index, Location oder CreationTime ein einzelnes eindeutiges Objekt ausgewählt wird.

Was ist ein Ordinalbezeichner in QTP/UFT?
An Ordnungszahl ist eine numerische Eigenschaft, UFT (früher QTP) fügt einer Objektbeschreibung Eigenschaften hinzu, wenn die während einer Aufzeichnungssitzung erfassten obligatorischen und unterstützenden Eigenschaften nicht ausreichen, um das Objekt eindeutig zu identifizieren. Anstatt einen Fehler auszulösen, greift das Tool auf einen Zähler zurück, der sinngemäß besagt: „Nimm das dritte Objekt dieser Klasse.“
Standardmäßig ist jeder Testobjektklasse eine ordinale Kennung zugeordnet. Ein WebEdit-Steuerelement hat eine andere Nummer als ein WinButton-Steuerelement, und ein Browser hat wiederum eine andere Nummer. Sie können die standardmäßige ordinale Kennung einer Klasse im Fenster „Objektidentifizierung“ anzeigen oder ändern.
Wie der obige Screenshot zeigt, befindet sich das Dropdown-Menü für die Ordinalzahl ganz unten im Dialogfeld „Objektidentifizierung“, unterhalb der Listen mit den obligatorischen und optionalen Eigenschaften. Diese Position ist kein Zufall: Sie spiegelt die Reihenfolge wider, in der UFT konsultiert tatsächlich die drei Gruppen.
Es gibt drei Arten von Ordinalzahlen in UFT:
- Indexbasiert
- Ortsbasierend
- Erstellungszeitpunkt
Warum UFT Ordinalzahlen werden nur im äußersten Notfall verwendet.
Objektidentifizierung in UFT Der Prozess läuft kaskadenartig ab. Zuerst werden die obligatorischen Eigenschaften gelernt. Falls diese keine eindeutige Übereinstimmung liefern, werden nacheinander Hilfseigenschaften hinzugefügt, bis die Beschreibung eindeutig ist. Erst wenn beide Gruppen erschöpft sind, … UFT Es wird eine ordinale Kennung angehängt, und zur Laufzeit wird der Smart-Identification-Mechanismus konsultiert, bevor dem ordinalen Wert vertraut wird.
Der Grund für diese Rangfolge ist Stabilität. Obligatorische und optionale Eigenschaften beschreiben was Ein Objekt besteht aus: seinem Namen, seinem HTML-Tag, seinem Typ und seiner Bezeichnung. Ein ordinaler Bezeichner beschreibt lediglich woher Das Objekt befand sich zufällig zum Zeitpunkt der Aufnahme an diesem Ort. Alles, was die Seite verändert, verändert die Zahl:
- Ein Entwickler fügt ein verstecktes Feld über dem von Ihnen automatisierten Feld ein.
- Ein Werbebanner fügt dem Header zwei zusätzliche Links hinzu.
- Ein responsives Layout wandelt das Formular von zwei Spalten in eine Spalte um.
- Ein Popup-Browser öffnet sich früher als während des aufgezeichneten Laufs.
Keine dieser Änderungen beeinträchtigt eine Beschreibung, die auf einem Namen oder einer ID basiert, jedoch verschiebt jede einzelne unbemerkt alle Index- und Positionswerte auf der Seite. Aus diesem Grund betrachten erfahrene Entwickler einen ordinalen Bezeichner als Hinweis darauf, dass die Objektbeschreibung überarbeitet werden muss, und nicht als fertige Lösung. Dasselbe Prinzip gilt für alle Bereiche. Automatisierungstests Rahmenwerke im Allgemeinen, einschließlich der Locator-Strategie in Selenium.
💡 Tipp: Bevor Sie eine Ordnungszahl akzeptieren, öffnen Sie das Objekt im Objekt-Spion und suchen Sie nach einem stabilen benutzerdefinierten Attribut. Durch Hinzufügen dieses Attributs zur Liste der Hilfseigenschaften der Klasse entfällt häufig die Notwendigkeit einer Ordnungszahl für jedes zukünftige Objekt dieses Typs.
Arten von Ordinalbezeichnern in UFT/QTP
Indexbasiert
- Wenn ein indexbasierter ordinaler Bezeichner verwendet wird, UFT weist dem einen Wert zu Index Eigenschaften des Objekts während der Aufzeichnung.
- Der Wert basiert auf der Reihenfolge, in der das Objekt im Quellcode erscheint, nicht auf der Reihenfolge auf dem Bildschirm.
- Das erste Vorkommen hat den Wert 0.
- Die Werte der Index-Eigenschaft sind objektspezifisch, daher wird jede Testobjektklasse separat gezählt.
- Wenn Sie also index:=3 verwenden, um ein WebEdit-Testobjekt zu beschreiben, UFT sucht nach dem vierten WebEdit-Objekt auf der Seite.
- Wenn Sie hingegen index:=1 verwenden, um ein WebButton-Testobjekt zu beschreiben, UFT sucht nach dem zweiten WebButton-Objekt auf der Seite.
Ortsbasierend
- Wenn ein ortsbezogener ordinaler Identifikator verwendet wird, UFT weist dem einen Wert zu Standort Eigenschaft des Objekts, um es eindeutig zu identifizieren.
- Der Wert basiert auf der Reihenfolge, in der das Objekt im Fenster, Rahmen oder Dialogfeld im Verhältnis zu anderen Objekten mit identischen Eigenschaften angezeigt wird.
- Das erste Vorkommen des Objekts ist 0.
- Die Werte werden in Spalten von oben nach unten und dann von links nach rechts zugeordnet.
- Der Standort ist der standardmäßige ordinale Bezeichner für die meisten Standard- Windows Testobjektklassen, bei denen das visuelle Layout stabiler ist als die Markup-Reihenfolge.
Erstellungszeitpunkt
- Wenn der Erstellungszeit-Ordinalbezeichner verwendet wird, UFT weist dem einen Wert zu Erstellungszeit Eigenschaft eines Browserobjekts.
- Dieser Bezeichner ist nur für die Webumgebung und nur für Browser-Testobjekte verfügbar.
- Der Wert gibt die Reihenfolge an, in der der Browser im Verhältnis zu anderen geöffneten Browsern geöffnet wurde.
- Der erste während des Laufs geöffnete Browser erhält creationtime:=0, und nachfolgende Browser erhalten 1, 2, 3 usw.
- Wird ein Browser geschlossen, behalten die verbleibenden Browser ihre ursprünglichen Werte und werden nicht neu nummeriert.
Index vs. Standort vs. Erstellungszeit: Vergleichstabelle
Die drei Identifikatoren beantworten drei verschiedene Fragen, und die Wahl des falschen Identifikators ist eine häufige Ursache für zeitweilige Ausfälle.
| Aspekt | Index | Standort | Erstellungszeitpunkt |
|---|---|---|---|
| Name des Anwesens | Index | Standort | Erstellungszeit |
| Bestellgrundlage | Reihenfolge in der Quellcode-/Objekthierarchie | Bildschirmposition innerhalb des Fensters, Rahmens oder Dialogs | Reihenfolge, in der Browserinstanzen geöffnet wurden |
| Zählregel | Sequenziell, pro Testobjektklasse | Spalten, von oben nach unten, dann von links nach rechts | Sequenziell, pro Browserinstanz |
| Erster Wert | 0 | 0 | 0 |
| Gilt für | Web und Windows Unterricht | Hauptsächlich Standard Windows Unterricht | Nur Browserobjekte |
| Pausen, wenn | Änderungen der Aufschlagsreihenfolge | Das Layout wurde neu positioniert oder in seiner Größe angepasst. | Windows in einer anderen Reihenfolge öffnen |
| am besten geeignet für | Steuerelemente für wiederholte Raster- oder Tabellenelemente | Ältere Desktop-Formulare mit festem Layout | Webprozesse mit mehreren Fenstern, wie z. B. Zahlungs-Pop-ups |
So legen Sie die Ordnungszahl im Objekt-Repository fest
Die Ordnungszahl wird pro Testobjektklasse konfiguriert und automatisch auf jedes Objekt dieser Klasse angewendet. UFT Lernt im Nachhinein. Bereits im Repository vorhandene Objekte werden nicht rückwirkend aktualisiert.
- Öffne UFT und wählen Sie Werkzeuge > Objekterkennung.
- Wählen Sie die Umgebung, z. B. Web oder Standard. Windowsaus dem Dropdown-Menü „Umgebung“.
- Wählen Sie die Testobjektklasse aus, die Sie ändern möchten, z. B. WebEdit oder WinButton.
- Im Ordinalkennung Im Abschnitt „Index“, „Ort“, „Erstellungszeit“ oder „Keine“ auswählen.
- Klicken Sie auf OK und das Objekt neu lernen, damit der neue Ordinalwert erfasst wird.
- Öffnen Sie das Objekt-Repository, wählen Sie das Objekt aus und vergewissern Sie sich, dass die Ordinalzahl nun in der Beschreibungsliste angezeigt wird.
Auswahl Keine Präsentation Deaktiviert den Fallback für diese Klasse vollständig. UFT Dann wird ein Identifizierungsfehler gemeldet, anstatt eine Vermutung anzustellen. Dies ist oft das gewünschte Verhalten in einer Testsuite, in der eine stille Fehlidentifizierung schädlicher ist als ein eindeutiger Fehler. Halten Sie Ihre Erwartungen in einem gut geschriebenen Dokument fest. Testfall macht diesen Kompromiss für das gesamte Team deutlich.
⚠️ Warnung: Die Änderung des Ordnungsindex einer Klasse ist eine Einstellung auf Systemebene, nicht auf Testebene. Wenn dieser Index nicht exportiert und freigegeben wird, können Skripte, die auf Ihrem System erfolgreich ausgeführt werden, auf dem System eines Kollegen oder auf dem Build-Agent fehlschlagen.
Wie man Ordinalzahlen verwendet in Descriptive Programmierung
In der deskriptiven Programmierung gibt es keinen Dialog zur Objektidentifizierung. Die Ordinalzahl wird direkt in die Beschreibungszeichenfolge geschrieben, genau wie jeder andere Eigenschaftsname, und sie beginnt immer bei null.
' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank") objPage.WebEdit("index:=3").Set "9999999999" Print "Filled WebEdit occurrence #" & (3 + 1) ' Location is counted top to bottom, then left to right objPage.WebButton("location:=1").Click Print "Clicked WebButton occurrence #" & (1 + 1) ' CreationTime works only on Browser objects Print "Switching to browser opened at position #" & (1 + 1) Browser("creationtime:=1").Sync
Ausgang:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
Ein sichereres Vorgehen besteht darin, reale Eigenschaften mit ChildObjects Die Ordinalzahl wird also vor ihrer Verwendung validiert. Das folgende Beispiel geht von einer Seite mit fünf übereinstimmenden WebEdit-Objekten und dem Index 9 aus.
Dim oDesc, oChildren, intIndex Set oDesc = Description.Create() oDesc("micclass").Value = "WebEdit" oDesc("html tag").Value = "INPUT" Set oChildren = objPage.ChildObjects(oDesc) intIndex = 9 If intIndex < oChildren.Count Then oChildren(intIndex).Set "Guru99" Else Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match" End If
Ausgang:
Index 9 is out of range; only 5 objects match
Diese Schutzfunktion wandelt den nichtssagenden Laufzeitfehler „Objekt kann nicht identifiziert werden“ in eine lesbare Meldung um, was wichtig ist, wenn Ergebnisse in einem Fehlerbericht veröffentlicht werden. tracker oder zu HP ALM integriert mit UFT.
Häufige Fehler bei der Verwendung von Ordinalzahlen
Die meisten ordnungsbezogenen Defekte trace zurück zu einer kleinen Anzahl wiederkehrender Fehler.
- Zählen von 1 an. Jeder ordinale Bezeichner beginnt bei 0. Der häufigste Fehler ist, für das erste Feld index:=1 zu schreiben. Dies führt zu einem Off-by-One-Fehler, der wie ein Timing-Problem aussieht.
- Verwechslung von Index und Speicherort. Der Index folgt dem Quellcode, die Position der Anzeige auf dem Bildschirm. Auf einer Seite, auf der CSS Elemente neu anordnet, unterscheiden sich die beiden Werte und werden vertauscht.ping sie zielt stillschweigend auf die falsche Kontrolle ab.
- Verwendung von CreationTime außerhalb der Webumgebung. Diese Eigenschaft existiert nur für Browser-Objekte. Die Anwendung auf ein Page-, Frame- oder Window-Objekt führt zu einem Fehler wegen einer nicht unterstützten Eigenschaft.
- Eine Ordinalzahl wird in einer gemeinsam genutzten Funktion fest codiert. Eine wiederverwendbare Funktion, die index:=2 voraussetzt, wird unbrauchbar, sobald sie von einem zweiten Bildschirm mit einem anderen Layout aufgerufen wird.
- Ordinalzahlen nach Stabilisierung der Anwendung im Repository belassen. Sobald die Entwickler stabile IDs hinzugefügt haben, sollten die Objekte erneut überprüft und die Ordinalzahl durch die neue Eigenschaft ersetzt werden.
- Verwendung von Ordinalzahlen innerhalb von Schleifen über Gitter. Bevorzugen
ChildObjects, wodurch eine Live-Sammlung zurückgegeben wird, sodass die Anzahl die aktuelle Seite und nicht die aufgezeichnete Seite widerspiegelt.
Ressourcen
Laden Sie die im obigen Tutorial verwendeten Webseiten zum Selbstüben herunter.
Ordinalbezeichner sind nur ein kleiner Teil des Objektidentifizierungsmodells. Um zu sehen, wie sie in den gesamten Arbeitsablauf passen, fahren Sie mit dem vollständigen Dokument fort. QTP/UFT TrainingsreiheÜberprüfen Sie die Grundlagen in SoftwaretestErfahren Sie, wie die Ergebnisse im Unternehmen verwaltet werden. HP ALM-Tutorialund vergleichen Sie die Ortungsstrategien mit den Selenium Lernprogramm.
Häufig gestellte Fragen
Klicken Sie auf werden auf dieser Seite erläutert wenn das Video nicht zugänglich ist

