Was ist beschreibende Programmierung?
Die beschreibende Programmierung wird verwendet, um Operationen an einem Objekt im AUT auszuführen, dessen Definition nicht im Objekt-Repository gespeichert ist. Mit diesem Mechanismus können Sie die Identifikation aus dem Objekt-Repository umgehen und die Objektbeschreibung in der Anweisung selbst angeben.
Ein Objektname wird einfach verwendet, um ein Objekt im Skript mit seiner Beschreibung in einem Objekt-Repository zuzuordnen. Das heißt, wenn Sie den Objektnamen in Ihrem Skript und Objekt-Repository ändern, sollte das Skript ausgeführt werden. Sehen Sie sich das folgende Video zu diesem Konzept an
Klicken Sie hier, wenn das Video nicht zugänglich ist
Video-Highlights
- Löschen Sie die Objektbeschreibung des Agentennamens Win Edit Box aus dem Objekt-Repository. Wenn Sie den Test erneut ausführen, schlägt er fehl, da das Objekt nicht erkannt werden kann. Lassen Sie uns den Grund untersuchen, warum das Skript fehlschlägt
- Während der Laufzeit identifiziert Micro Focus UFT den Vorgang, der für das WinEdit-Feld ausgeführt wird, und die Objektbeschreibung im Objekt-Repository wird als Agentenname gespeichert. Dieser Name wird verwendet, um das Objekt in einem Objekt-Repository zu verfolgen. Für ein Elternteil können nicht zwei untergeordnete Objekte mit demselben Namen vorhanden sein. Daher ordnet QTP das Objekt im Repository eindeutig zu. Anschließend wird die im Objekt-Repository gespeicherte Beschreibung verwendet und der Name durch die Beschreibung ersetzt. Diese Anweisung wird dann verwendet, um das Objekt in der zu testenden Anwendung zu identifizieren
- Da wir in unserem Fall diese Objektbeschreibung komplett gelöscht hatten, schlägt das Skript fehl
- Was aber, wenn Sie als Tester anstelle von QTP die Objektbeschreibung ersetzen, geben Sie die Objektbeschreibungen direkt in Ihrem Skript an. Dies ist nichts anderes als "Beschreibende Programmierung"
Arten der beschreibenden Programmierung
Sie können die beschreibende Programmierung auf zwei Arten verwenden
- Statisch
- Dynamisch
Statische beschreibende Programmierung
In der statischen Methode geben Sie zur Objektidentifizierung die Eigenschaft eines Objekts im folgenden Format an
Eigenschaft: = Werte,
Dieses Format wird als Eigenschaftswertpaar bezeichnet und in Anführungszeichen> eingeschlossen
Wenn Ihr Objekt mehrere Beschreibungen zur Identifizierung verwendet, können Sie diese mit Kommas > angeben
In unserem Fall lautet die Beschreibung für Agentenname
"nativeclass: = Edit", "angehängter Text: = Agentenname:"
Dynamische beschreibende Programmierung
Die zweite Methode, um dieselbe Aktion auszuführen, ist die Verwendung der dynamischen beschreibenden Programmierung
Wenn Ihr Skript den beschreibenden Programmierobjektkandidaten mehrmals verwendet, ist es sehr mühsam, alle Eigenschaftswertpaare für jede Anweisung anzugeben
In solchen Fällen können Sie Gebrauch machen Beschreibung Klasse zur Verfügung gestellt von QTP
Die Syntax zum Erstellen eines Beschreibungsobjekts lautet
Set MyDescription = Description.Create ();MyDescription ("property"). Value = "property-value";
Dies ist die dynamische Methode
Warum beschreibende Programmierung verwenden?
Video-Transkript
- Die Millionen-Dollar-Frage lautet, warum DP verwendet werden soll, wenn der Objektidentifizierungsprozess von QTP ausgeführt wird
- Angenommen, Sie müssen ein Jobportal testen. Sie geben eine Suchabfrage in das Portal ein und
- Ihr Test erwartet, dass Sie alle verfügbaren Jobs auswählen und auf den Job anwenden klicken
- Die Anzahl der reflektierten Jobs hängt jedoch von der Suchabfrage und den Jobs ab, die zum Zeitpunkt der Skriptausführung verfügbar sind. Es gibt jedoch keine Möglichkeit, die Anzahl der reflektierten Jobs im Voraus vorherzusagen
- In solchen Fällen können Sie eine beschreibende Programmierung verwenden. Obwohl Sie die Anzahl und Namen der Kontrollkästchen nicht kennen, kennen Sie die Klasse für die Objekte als "WebCheckBox".
- Mit der ChildObject-Methode können Sie Objekte zurückgeben, die zu einem bestimmten übergeordneten Element gehören
- Eine Codezeile wie -
Setzen Sie allObjects = Browser ("Jobs"). Page ("QTP"). ChildObjects ()
- Gibt alle untergeordneten Objekte für diese Seite zurück.
- Wir wollen aber nur WebCheckBox-Objekte. Dazu können wir ein Filtererstellungsobjekt erstellen und seine Eigenschaft als Web-Kontrollkästchen festlegen und diesen Filter als Argument für die ChildObjects-Methode übergeben
- In diesem Fall werden nur die Kontrollkästchen zurückgegeben.
- Als Nächstes können Sie einen Code wie diesen schreiben, der ab Null auf die gesamte Sammlung von Kontrollkästchen zugreift und alle Kontrollkästchen aktiviert.
- Als nächstes können Sie auf die Schaltfläche Übernehmen klicken, um den Test abzuschließen
- Sie können auch die beschreibende Programmierung verwenden, um Objekte auszuführen, die schwer aufzuzeichnen sind, z. B. Panels automatisch ausblenden, Objekte mit sich ändernden Hierarchien, verschachtelte innere Objekte, Untermenüs.
- Sie können auch erweiterte Zeichenfolgenmanipulationen mithilfe der beschreibenden Programmierung durchführen
- In Verbindung mit der Indexeigenschaft kann die beschreibende Programmierung bei der Identifizierung schwieriger Objekte sehr nützlich sein.
- Wenn Sie eine programmatische Beschreibung für ein Objekt in der Objekthierarchie verwenden, müssen Sie die Beschreibungsprogrammierung für nachfolgende untergeordnete Objekte verwenden
- Beispielsweise wurde für das Seitenobjekt eine beschreibende Programmierung verwendet, für das nachfolgende untergeordnete Objekt wird jedoch das WinEdit Object Repository verwendet, was nicht korrekt ist
- Im Gegenteil, hier wird sowohl für Page als auch für WinEdit eine beschreibende Programmierung verwendet, die korrekt ist