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.

  • 🔀 Grundlegende Syntax: Die If…Then-Anweisung wird mit einem optionalen Else-Block kombiniert und mit End If abgeschlossen. Pro Auswertung wird genau ein Zweig ausgeführt.
  • 🧮 Mehrere Bedingungen: ElseIf prüft die Bedingungen von oben nach unten und stoppt beim ersten Treffer (True), wodurch lange Ketten von einzelnen If-Blöcken ersetzt werden.
  • 🪆 Verschachtelte Logik: Durch das Platzieren einer If-Anweisung innerhalb eines Then- oder Else-Abschnitts werden abhängige Prüfungen durchgeführt; aus Gründen der Lesbarkeit sollte die Verschachtelung auf zwei oder drei Ebenen beschränkt werden.
  • 🎯 Fall auswählen: Vergleicht eine Variable mit mehreren festen Werten und ist übersichtlicher als eine lange ElseIf-Kette.
  • 🔍 Vorhandene Immobilie: Gibt True oder False zurück, je nachdem, ob sich ein Objekt auf dem Bildschirm befindet – die Standardbedingung für If-Else-Verzweigungen.
  • 🧪 Anwendungsbeispiel: Kombinieren Sie If Else mit Exist, um ein Skript automatisch in einen negativen oder positiven Anmeldepfad für Flugreservierungen umzuleiten.
  • 🤖 KI-Unterstützung: KI-Tools können If-Else- und Select-Case-Blöcke entwerfen und fehlende End-If-Anweisungen während des Debuggens kennzeichnen.

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.

  1. 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.
  2. 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.
  3. Legen Sie die Bedingung fest, um zu prüfen, ob das Fenster „Fehlerinformationen“ vorhanden ist, indem Sie die Existieren Eigenschaft anstelle eines Klick-Schritts.
  4. Verschieben Sie die Schritte des negativen Szenarios, wie das Schließen des Fehlerfensters und des Anmeldedialogs, in den If-Block.
  5. Verschieben Sie die Schritte des positiven Szenarios, wie zum Beispiel das Schließen des Fensters für die Flugreservierung, in den Else-Block.
  6. 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.

Häufig gestellte Fragen

ElseIf wertet Bedingungen nacheinander aus und stoppt beim ersten Treffer. Dadurch ist es schneller und übersichtlicher als mehrere unabhängige If-Blöcke. Verwenden Sie separate If-Anweisungen nur dann, wenn die Bedingungen unabhängig voneinander sind und jede einzelne geprüft werden muss.

Exist verwendet die UFT Standardmäßig beträgt das Synchronisierungs-Timeout einige Sekunden, es sei denn, ein benutzerdefinierter Wert wie Exist(10) wird innerhalb der Klammern übergeben, um länger auf ein langsam ladendes Objekt zu warten.

Ja. KI-Assistenten können If-, ElseIf- und Select Case-Blöcke anhand einer Beschreibung der Testlogik in einfacher Sprache erstellen. Tester sollten jedoch vor dem Ausführen des Skripts weiterhin Objektnamen, Eigenschaften und Timeout-Werte überprüfen.

KI-Tools können ein Skript scannen, nicht übereinstimmende End If-Anweisungen und nicht erreichbare Else-Blöcke kennzeichnen und Korrekturen vorschlagen, was die Fehlersuche im Vergleich zur manuellen Zeile-für-Zeile-Überprüfung langer Skripte beschleunigt.

Ja. Verwenden Sie das Schlüsselwort Is innerhalb einer Case-Zeile, zum Beispiel Case Is > 90, um jeden Wert oberhalb eines Schwellenwerts zu erfassen, anstatt jeden einzelnen aufzulisten.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: