Descriptive Programmierung in QTP/UFT: Dynamisch und statisch

Was ist Descriptive Programmierung?

DescriptDie ive-Programmierung wird verwendet, um Operationen an einem Objekt in der AUT auszuführen, dessen Definition nicht im Object Repository gespeichert ist. Mit diesem Mechanismus können Sie die Identifikation aus dem Object Repository umgehen und das Objekt Description in der Aussage selbst.

Ein Objektname wird einfach verwendet, um ein Objekt im Skript mit seiner Beschreibung in einem Objekt-Repository abzubilden. Das bedeutet, wenn Sie den Objektnamen in Ihrem Skript und Objektrepository ändern, sollte das Skript ausgeführt werden. Sehen Sie sich das folgende Video zu diesem Konzept an

Klicke hier wenn das Video nicht zugänglich ist

Video Highlights

  • Löschen des Objekts Description von Agent Name 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 an der WinEdit-Box und dem Objekt ausgeführt wird Description im Objekt-Repository wird als Agentenname gespeichert. Dieser Name wird verwendet, um das Objekt in einem Objekt-Repository zu verfolgen. Für ein übergeordnetes Objekt können Sie nicht zwei untergeordnete Objekte mit demselben Namen haben. Daher ordnet QTP das Objekt im Repository eindeutig zu. Anschließend verwendet es die gespeicherte Beschreibung im Objekt-Repository und ersetzt den Namen durch die Beschreibung. Anschließend wird diese Anweisung verwendet, um das Objekt in der getesteten Anwendung zu identifizieren.
  • Da wir in unserem Fall diese Objektbeschreibung komplett gelöscht hatten, schlägt das Skript fehl
  • Was aber, wenn QTP nicht die Objektbeschreibung ersetzt, sondern Sie als Tester die Objektbeschreibungen direkt in Ihrem Skript angeben? Das ist nichts anderes als „Descriptive Programmierung“

Arten von Descriptive Programmierung

Sie können verwenden Descriptive Programmierung auf zwei Arten

  1. Statisch
  2. Dynamisch

Statisch Descriptive Programmierung

Bei der statischen Methode geben Sie zur Objektidentifikation die Eigenschaft eines Objekts im folgenden Format an

property:=values,

Dieses Format wird als Eigenschaftswertpaar bezeichnet und in Anführungszeichen eingeschlossen

Wenn Ihr Objekt verwendet Mehrere Beschreibungen zur Identifizierung können Sie durch Kommas angeben

In unserem Fall lautet die Beschreibung für den Agentennamen also

"nativeclass:=Edit", "attached text:=Agent Name:"

Dynamisch Descriptive Programmierung

Die zweite Methode, die gleiche Aktion durchzuführen, ist die Verwendung von Dynamic Descriptive Programmierung

Falls Ihr Skript den Objektkandidaten für die beschreibende Programmierung mehrmals verwendet, ist es sehr mühsam, alle Eigenschaftswertpaare für jede Anweisung anzugeben

In solchen Fällen können Sie von uns Gebrauch machen DescriptIonen-Klasse bereitgestellt von QTP

Die Syntax zum Erstellen eines Beschreibungsobjekts ist

Set MyDescription = Description.Create();
MyDescription("property").Value = "property-value";

Dies ist die Dynamische Methode

Warum verwenden Descriptive Programmierung?

Video Transcript

  • Die Millionen-Dollar-Frage ist, warum man DP verwenden sollte, wenn der Objektidentifizierungsprozess von QTP abgewickelt wird
  • Angenommen, Sie sollen ein Jobportal testen. Sie geben eine Suchanfrage in das Portal ein und
  • Ihr Test erwartet, dass Sie alle verfügbaren Jobs auswählen und auf „Job bewerben“ klicken
  • Die Anzahl der reflektierten Jobs hängt jedoch von der Suchabfrage und den zum Zeitpunkt der Skriptausführung verfügbaren Jobs ab. Es gibt jedoch keine Möglichkeit, die Anzahl der reflektierten Jobs im Voraus vorherzusagen
  • In solchen Fällen können Sie die deskriptive Programmierung verwenden. Auch wenn Sie die Anzahl und Namen der Kontrollkästchen nicht kennen, kennen Sie die Klasse für die Objekte als „WebCheckBox"
  • Sie können die Verwendung ChildObject-Methode um Objekte zurückzugeben, die zu einem bestimmten übergeordneten Element gehören
  • Eine Codezeile wie –
    Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
  • Gibt alle untergeordneten Objekte für diese Seite zurück.
  • Aber wir wollen 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 auf die gesamte Sammlung von Kontrollkästchen zugreift, beginnend bei Null, und alle Kontrollkästchen aktiviert.
  • Anschließend können Sie auf die Schaltfläche „Anwenden“ klicken, um den Test abzuschließen
  • Sie können auch DescriptIntelligente Programmierung zum Ausführen schwer aufzuzeichnender Objekte, wie z. B. automatisch auszublendende Bedienfelder, Objekte mit wechselnden Hierarchien, verschachtelte innere Objekte, Untermenüs.
  • Mithilfe der deskriptiven Programmierung können Sie auch erweiterte Zeichenfolgenmanipulationen durchführen
  • In Verbindung mit der Indexeigenschaft könnte die beschreibende Programmierung bei der Identifizierung schwieriger Objekte sehr nützlich sein.
  • Wenn Sie für ein Objekt in der Objekthierarchie eine programmgesteuerte Beschreibung verwenden, müssen Sie für nachfolgende untergeordnete Objekte eine Beschreibungsprogrammierung verwenden
  • Beispielsweise wurde für das Seitenobjekt beschreibende Programmierung verwendet, für das nachfolgende untergeordnete Objekt wird jedoch WinEdit Object Repository verwendet, was falsch ist
  • Im Gegenteil, hier wird sowohl für Page als auch für WinEdit eine beschreibende Programmierung verwendet, was korrekt ist