WENN, SONST, ENDE WENN, Existiert in QTP/UFT mit Beispiel
⚡ Intelligente Zusammenfassung
IF Else End If-Anweisungen lassen UFT und QTP Skripte verzweigen sich je nach Laufzeitbedingungen, während die Eigenschaft Exist prüft, ob ein Objekt auf dem Bildschirm erscheint, bevor die Verzweigung ausgeführt wird. Dies umfasst auch ElseIf, verschachtelte If- und Select Case-Anweisungen.

Was ist eine IF-Else-Anweisung in UFT/QTP?
Die IF-Else-Anweisung ist die gebräuchlichste bedingte Kontrollstruktur in VBScript, der Skriptsprache, die zum Schreiben verwendet wird. UFT/QTP Automatisierungsskripte ermöglichen es einem Skript, zur Laufzeit Entscheidungen zu treffen: Ist eine Bedingung wahr, wird ein bestimmter Anweisungsblock ausgeführt; ist sie falsch, wird ein anderer ausgeführt. Tester nutzen diese Konstruktion häufig, beispielsweise um ein Skript je nach Erfolg oder Fehler einer Anmeldung oder dem Erscheinen eines Objekts auf dem Bildschirm zu verzweigen. Eine vollständige Liste der von VBScript unterstützten bedingten Anweisungen und Vergleichsoperatoren finden Sie in der Dokumentation. VBScript-Bedingungsanweisung -Guide.
Die Grundform kombiniert eine Wenn…Dann-Anweisung mit einem optionalen Sonst-Block und schließt immer mit einem Ende-Wenn-Block ab. UFT/QTP Die Bedingung wird einmal ausgewertet. Ist sie wahr, werden nur die Anweisungen zwischen „Then“ und „Else“ ausgeführt; ist sie falsch, werden nur die Anweisungen zwischen „Else“ und „End If“ ausgeführt, und es wird nur ein Zweig ausgeführt. Die folgende Syntax prüft einen numerischen Wert und zeigt für jedes Ergebnis eine andere Meldung an.
Dim iValue iValue = 25 If iValue > 18 Then MsgBox "Eligible" Else MsgBox "Not Eligible" End If
In UFT/QTPDie Bedingung vergleicht fast immer eine Objekteigenschaft, ein Prüfpunktergebnis oder den Rückgabewert der Eigenschaft `Exist` anstelle einer einfachen Zahl, da die meisten Skripte eine Anwendung validieren, anstatt arithmetische Operationen durchzuführen. Alle Beispiele weiter unten auf dieser Seite basieren auf dem oben gezeigten `If…Then…Else…End If`-Muster; nur die Bedingung ändert sich. Unabhängig von der verwendeten Bedingung sollten Sie immer sowohl den `True`- als auch den `False`-Pfad mindestens einmal testen, bevor Sie das Skript in eine Regressionsumgebung integrieren.
IF…Dann…SonstWenn…Sonst-Anweisung in UFT/QTP
Eine einfache If-Else-Anweisung wählt immer nur zwischen zwei Ergebnissen. Wenn ein Skript drei oder mehr sich gegenseitig ausschließende Bedingungen prüfen muss, fügt VBScript dem gleichen Block eine ElseIf-Anweisung hinzu. UFT/QTP Die Anweisung prüft jede Bedingung von oben nach unten und führt den ersten Block aus, dessen Bedingung wahr ist; alle anderen Blöcke, einschließlich des abschließenden Else-Zweigs, werden übersprungen. Dadurch bleibt das Skript deutlich lesbarer als durch das Verschachteln mehrerer unabhängiger If-Blöcke.
- Die Bedingungen werden von oben nach unten ausgewertet, und die Auswertung endet, sobald die erste Bedingung erfüllt ist.
- Jedes ElseIf-Schlüsselwort benötigt ein eigenes Then und eine eigene Bedingung.
- Der nachfolgende Else-Zweig ist optional und wird nur ausgeführt, wenn keine der darüber stehenden Bedingungen zutrifft.
- Nur ein einziges End If schließt den gesamten Block ab, unabhängig davon, wie viele ElseIf-Zweige er enthält.
Dim iMarks iMarks = 75 If iMarks >= 90 Then MsgBox "Grade A" ElseIf iMarks >= 75 Then MsgBox "Grade B" ElseIf iMarks >= 50 Then MsgBox "Grade C" Else MsgBox "Fail" End If
Das obige Skript gibt für jeden Punktebereich eine andere Note aus und beendet die Prüfung weiterer Bedingungen, sobald ein Zweig als „Wahr“ ausgewertet wird. Dadurch bleiben große Entscheidungsbäume auch innerhalb eines langen Automatisierungslaufs effizient.
Das gleiche Muster gilt direkt für UI-Prüfungen: Ein Skript könnte den Wert eines Statusfelds lesen und ElseIf verwenden, um je nach gefundenem Text die Behandlung für bestanden, Warnung oder fehlgeschlagen zu steuern, anstatt drei separate If-Blöcke zu verwenden, die das Feld jeweils unabhängig voneinander neu auswerten.
Verschachtelte If-Anweisung in UFT/QTP
Eine verschachtelte If-Anweisung platziert einen vollständigen If…End If-Block innerhalb des Then or Else-Abschnitts eines anderen If-Blocks. UFT/QTP Die äußere Bedingung wird zuerst erfüllt, die innere If-Anweisung erst dann, wenn der äußere Zweig erreicht wird. Dieses Muster eignet sich für voneinander abhängige Prüfungen, beispielsweise die Bestätigung des Wahlalters und die anschließende Prüfung des Geschlechts, anstatt alle Bedingungen in einem langen Ausdruck mit UND und ODER zu kombinieren. Verschachtelungen sollten flach gehalten werden, in der Regel maximal zwei oder drei Ebenen, da jede zusätzliche Ebene die Lesbarkeit des Skripts verschlechtert. trace und debuggen. In UFT/QTP Bei diesen Bedingungen prüft eine verschachtelte If-Anweisung üblicherweise zuerst das Betriebssystem und verzweigt dann erneut zum Browser- oder Anwendungsstatus, sodass der innere Block erst ausgeführt wird, wenn der äußere Kontext bestätigt ist.
💡 Tipp: Richten Sie jeden verschachtelten Block um eine zusätzliche Ebene ein und geben Sie jedem End If eine eigene Zeile. Konsistente Einrückung ist der schnellste Weg, ein fehlendes End If zu erkennen, bevor das Skript zur Laufzeit fehlschlägt.
Dim iAge, sGender iAge = 20 sGender = "Male" If iAge >= 18 Then If sGender = "Male" Then MsgBox "Eligible male voter" Else MsgBox "Eligible female voter" End If Else MsgBox "Not eligible to vote" End If
Wählen Sie eine Fallunterscheidung in UFT/QTP
Select Case ist eine Alternative zu einer langen ElseIf-Kette, wenn jeder Zweig dieselbe einzelne Variable mit einem anderen festen Wert vergleicht. UFT/QTP Der Ausdruck in der Select Case-Zeile wird einmal ausgewertet, anschließend der Reihe nach mit jedem Case-Wert verglichen und der erste passende Block ausgeführt. Ein optionaler Case Else-Zweig fängt alle Werte ab, die keiner der aufgeführten Fälle abdeckt, ähnlich dem abschließenden Else-Zweig in einem If-Block. Da die Vergleichsvariable nur einmal geschrieben wird, lässt sich ein langer Select Case-Block später auch einfacher aktualisieren als eine äquivalente Kette von ElseIf-Anweisungen, die in jedem Zweig denselben Variablennamen wiederholt.
Groß-/Kleinschreibung wird anhand der Gleichheit verglichen, wobei Groß-/Kleinschreibung beachtet wird. Daher gelten „Chrome“ und „chrome“ als unterschiedliche Treffer, sofern der Wert nicht zuvor normalisiert wurde, beispielsweise mit der Funktion LCase. Siehe dazu die VBScript-Variablendeklaration Leitfaden, wie Dim und Datentypen diese Vergleiche beeinflussen.
Dim sBrowserName sBrowserName = "Chrome" Select Case sBrowserName Case "Chrome" MsgBox "Launching Chrome" Case "Firefox" MsgBox "Launching Firefox" Case "Edge" MsgBox "Launching Edge" Case Else MsgBox "Browser not supported" End Select
| ERKLÄRUNG | Besten FÜR | ANZAHL DER BEDINGUNGEN | LESBARKEIT IN GROSSEN GRÖSSEN |
|---|---|---|---|
| Wenn…Sonst | Zwei mögliche Ergebnisse | 1 Zustand | Hoch |
| Wenn…SonstWenn…Sonst | Mehrere voneinander unabhängige Erkrankungen | 3 oder mehr Bedingungen | Tropfen fallen beim Wachsen der Äste ab |
| Fall auswählen | Viele feste Werte einer Variablen | Irgendeine Nummer | Bleibt hoch |
Mit dem Schlüsselwort Is kann man auch einen Bereich abgleichen, zum Beispiel Case Is > 90 innerhalb eines Select Case-Blocks. Dadurch kann ein einzelner Fall alle Werte oberhalb eines Schwellenwerts abdecken, anstatt jeden einzelnen aufzulisten.
Wählen Sie Select Case, wenn ein Skript eine Variable gegen viele mögliche Werte prüft; behalten Sie If…ElseIf für Bedingungen bei, die verschiedene Variablen vergleichen oder Bereiche und logische Operatoren verwenden.
Wie man IF ELSE mit der Exist-Eigenschaft verwendet UFT
Klicken Sie auf werden auf dieser Seite erläutert wenn das Video nicht zugänglich ist
Die Eigenschaft „Exist“ gibt „True“ oder „False“ zurück, je nachdem, ob ein Objekt in der zu testenden Anwendung vorhanden ist. Daher eignet sie sich ideal zur Kombination mit einer „If-Else“-Anweisung. Das folgende Beispiel greift das klassische Szenario der Anmeldefunktionalität erneut auf. Flugreservierung Bewerbung von der Tests Eine Reihe von Szenarien, in denen ein Skript entweder einen negativen Szenariopfad einschlägt, wenn ein Fehlerdialog erscheint, oder einen positiven Szenariopfad, wenn dies nicht der Fall ist. Dies spiegelt genau die Testszenario Wird im obigen Video behandelt.
- Zeichnen Sie zwei separate Skripte auf: eines, das sich mit einer gültigen Agentennamen- und Passwortkombination anmeldet, und eines, das sich mit einer ungültigen Kombination anmeldet.
- Fügen Sie direkt nach dem Anmeldeschritt einen If-Else-Schritt ein, damit beide Aufzeichnungen in einem einzigen kombinierten Skript ausgeführt werden können.
- Legen Sie die Bedingung fest, um zu prüfen, ob das Fenster „Fehlerinformationen“ vorhanden ist, indem Sie die Existieren Eigenschaft anstelle eines Klick-Schritts.
- Verschieben Sie die Schritte des negativen Szenarios, wie das Schließen des Fehlerfensters und des Anmeldedialogs, in den If-Block.
- Verschieben Sie die Schritte des positiven Szenarios, wie zum Beispiel das Schließen des Fensters für die Flugreservierung, in den Else-Block.
- Speichern Sie das kombinierte Skript und führen Sie es sowohl mit einem gültigen als auch mit einem ungültigen Anmeldeinformationssatz aus, um zu bestätigen, dass jeder Pfad korrekt ausgeführt wird.
Dim bLoginFailed bLoginFailed = Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Exist(5) If bLoginFailed Then 'Negative scenario - invalid login Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Close Dialog("Login").Close Else 'Positive scenario - valid login Window("Flight Reservation").Close End If
Neben If und Else unterstützt VBScript auch While…Wend und Für…Nächste Schleife Zur Wiederholung sowie für zusätzliche Verzweigungen können die oben beschriebenen ElseIf- und Select Case-Anweisungen verwendet werden. Die Kombination dieser Konstrukte mit der Exist-Eigenschaft ermöglicht es, eine einzelne UFT/QTP Das Skript verarbeitet sowohl positive als auch negative Testszenarien ohne manuelle Eingriffe.
⚠ Hinweis: Wenn man Exist einen längeren Wert übergibt, z. B. Exist(10), dann UFT Eine längere Wartezeit auf ein Objekt, bevor „False“ zurückgegeben wird, ist zwar für langsam ladende Dialoge hilfreich, kann aber die gesamte Testsuite verlangsamen, wenn sie in jedem Schritt verwendet wird. Längere Wartezeiten sollten nur für tatsächlich langsame Objekte reserviert werden. Ein kurzes, sinnvoll gewähltes Timeout sorgt dafür, dass das kombinierte Skript für positive und negative Szenarien in kontinuierlichen Testläufen zuverlässig und schnell ausgeführt werden kann.
