KDYŽ, Jinak, Konec KDYŽ, Existuje v QTP/UFT s příkladem

⚡ Chytré shrnutí

IF Else Konec příkazů If UFT a QTP Skripty se větví na základě běhových podmínek, zatímco vlastnost Exist kontroluje, zda se objekt před spuštěním větve objeví na obrazovce, a zahrnuje také ElseIf, vnořené If a Select Case.

  • 🔀 Základní syntaxe: Funkce If…Then se spáruje s volitelným blokem Else a uzavírá se funkcí End If, přičemž se při každém vyhodnocení spustí přesně jedna větev.
  • 🧮 Více podmínek: Funkce ElseIf kontroluje podmínky odshora dolů a zastaví se na první shodě True, čímž nahrazuje dlouhé řetězce samostatných bloků If.
  • 🪆 Vnořená logika: Umístění třídy If do jiné sekce Then nebo Else zpracovává závislé kontroly; pro lepší čitelnost ponechte vnoření na dvou nebo třech úrovních.
  • 🎯 Vyberte případ: Porovnává jednu proměnnou s několika pevnými hodnotami a čte se srozumitelněji než dlouhý řetězec ElseIf.
  • 🔍 Existující vlastnost: Vrací hodnotu True nebo False pro informaci, zda je objekt na obrazovce, což je standardní podmínka pro větvení If Else.
  • 🧪 Aplikovaný příklad: Kombinací If Else s Exist automaticky nasměrujete skript do negativní nebo kladné přihlašovací cesty k rezervaci letu.
  • 🤖 Asistence AI: Nástroje umělé inteligence dokáží navrhovat bloky If Else a Select Case a během ladění označovat chybějící příkazy End If.

Co je příkaz IF Else v UFT/QTP?

Příkaz IF Else je nejběžnější strukturou podmíněného řízení ve VBScriptu, skriptovacím jazyce používaném k psaní UFT/QTP automatizační skripty. Umožňuje skriptu rozhodovat se za běhu: když se podmínka vyhodnotí jako True, spustí se jeden blok příkazů a když se vyhodnotí jako False, spustí se jiný blok. Testeři se na tuto konstrukci neustále spoléhají, například pro větvení skriptu při úspěšném přihlášení oproti neúspěšnému, nebo když se objekt může, ale nemusí zobrazit na obrazovce. Úplný seznam podmíněných příkazů a operátorů porovnání, které VBScript podporuje, naleznete v Podmíněný příkaz VBScript průvodce.

Základní forma páruje If…Then s volitelným blokem Else a vždy se uzavírá pomocí End If. UFT/QTP vyhodnotí podmínku jednou. Pokud je True, provedou se pouze příkazy mezi Then a Else; pokud je False, provedou se pouze příkazy mezi Else a End If a provede se pouze jedna větev. Níže uvedená syntaxe kontroluje číselnou hodnotu a pro každý výsledek zobrazuje jiné okno se zprávou.

Dim iValue
iValue = 25
If iValue > 18 Then
    MsgBox "Eligible"
Else
    MsgBox "Not Eligible"
End If

In UFT/QTP, podmínka téměř vždy porovnává vlastnost objektu, výsledek kontrolního bodu nebo návratovou hodnotu vlastnosti Exist, spíše než prosté číslo, protože většina skriptů ověřuje testovanou aplikaci namísto provádění aritmetických operací. Každý další příklad na této stránce vychází ze stejného vzoru If…Then…Else…End If, jak je uvedeno výše; mění se pouze podmínka. Ať už použijete jakoukoli podmínku, vždy před přesunutím skriptu do regresní sady alespoň jednou otestujte cesty True i False.

KDYŽ…Pak…JinakKdyž…Jinak Příkaz v UFT/QTP

Jednoduchá metoda If Else vybírá pouze mezi dvěma výsledky. Pokud skript potřebuje otestovat tři nebo více vzájemně se vylučujících podmínek, VBScript přidá ElseIf do stejného bloku. UFT/QTP Kontroluje každou podmínku odshora dolů a spustí první blok, jehož podmínka je True; všechny ostatní bloky, včetně koncového bloku Else, jsou přeskočeny. Díky tomu je skript mnohem čitelnější než vnořování několika nesouvisejících bloků If do sebe.

  • Podmínky se vyhodnocují odshora dolů a vyhodnocování se zastaví u první podmínky, která je pravdivá.
  • Každé klíčové slovo ElseIf potřebuje svůj vlastní Then a svou vlastní podmínku.
  • Koncový příkaz Else je volitelný a spustí se pouze tehdy, když nesplňuje žádná z výše uvedených podmínek.
  • Pouze jeden End If uzavře celý blok, bez ohledu na to, kolik větví ElseIf obsahuje.
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

Výše uvedený skript vypíše pro každý rozsah skóre jinou známku a zastaví kontrolu dalších podmínek v okamžiku, kdy se jedna větev vyhodnotí jako True, což udržuje velké rozhodovací stromy efektivní i v rámci dlouhého automatizačního běhu.

Stejný vzorec platí přímo pro kontroly uživatelského rozhraní: skript by mohl přečíst hodnotu stavového pole a použít ElseIf k nasměrování do režimu pass, warning nebo fail v závislosti na nalezeném textu, namísto tří samostatných bloků If, které každý znovu vyhodnocují pole nezávisle.

Vnořený příkaz If v UFT/QTP

Vnořený blok If umístí jeden kompletní blok If…End If do sekce Then nebo Else jiného bloku If. UFT/QTP Nejprve vyřeší vnější podmínku a vnitřní If vyhodnotí pouze tehdy, když je tato vnější větev zadána. Tento vzor je vhodný pro kontroly, které jsou na sobě závislé, jako je například ověření, zda je uživatel dostatečně starý na to, aby mohl volit, a následné větvení podle pohlaví, spíše než sloučení každé podmínky do jednoho dlouhého výrazu pomocí operátorů And a Or. Vnořování by mělo být mělké, obvykle ne více než dvě nebo tři úrovně, protože každá další vrstva ztěžuje psaní skriptu. trace a ladění. V UFT/QTP Vnořený příkaz If obvykle nejprve kontroluje operační systém a poté se znovu větví na stav prohlížeče nebo aplikace, takže vnitřní blok se spustí až po potvrzení vnějšího kontextu.

💡 Tip: Odsaďte každý vnořený blok o jednu úroveň navíc a každému End If přidělte vlastní řádek. Konzistentní odsazení je nejrychlejší způsob, jak zachytit chybějící End If dříve, než skript selže za běhu.

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

Vyberte výrok případu v UFT/QTP

Select Case je alternativou k dlouhému řetězci ElseIf, kdy každá větev testuje stejnou proměnnou s jinou pevnou hodnotou. UFT/QTP Vyhodnotí výraz na řádku Select Case jednou, poté jej porovná s každou hodnotou Case v pořadí a spustí první blok, který se shoduje. Volitelný příkaz Case Else zachytí jakoukoli hodnotu, kterou žádný z uvedených případů nepokrývá, podobně jako koncový příkaz Else v bloku If. Protože se porovnávací proměnná zapisuje pouze jednou, je dlouhý blok Select Case také snazší později aktualizovat než ekvivalentní řetězec příkazů ElseIf, který opakuje stejný název proměnné v každé větvi.

Hodnoty shody velikosti písmen se porovnávají s použitím rovnosti a rozlišují velká a malá písmena, takže „Chrome“ a „chrome“ se počítají jako různé shody, pokud není hodnota nejprve normalizována, například pomocí funkce LCase. Viz Deklarace proměnných VBScript průvodce tím, jak Dim a datové typy ovlivňují tato porovnání.

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
PROHLÁŠENÍ NEJLEPŠÍ PRO POČET PODMÍNEK ČITELNOST V MĚŘÍTKU
Pokud…Jinak Dva výsledky 1 podmínka Vysoký
Pokud…JinakPokud…Jinak Několik nesouvisejících stavů 3 nebo více stavů Kapky, jak větve rostou
Vyberte případ Mnoho pevných hodnot jedné proměnné Jakékoliv číslo Zůstává vysoko

Případ může také odpovídat rozsahu pomocí klíčového slova Is, například Case Is > 90 uvnitř bloku Select Case, což umožňuje, aby jeden případ pokryl každou hodnotu nad prahovou hodnotou, namísto aby se každý z nich vypisoval jednotlivě.

Volbu Vybrat případ (Select Case) zvolte vždy, když skript testuje jednu proměnnou s mnoha možnými hodnotami; volbu If…ElseIf ponechte pro podmínky, které porovnávají různé proměnné nebo používají rozsahy a logické operátory.

Jak použít IF Else s vlastností Exist v UFT

klikněte zde pokud video není přístupné

Vlastnost Exist vrací hodnotu True nebo False v závislosti na tom, zda je objekt aktuálně přítomen v testované aplikaci, což z ní činí přirozenou podmínku pro párování s vlastností If Else. Následující příklad se vrací ke klasickému scénáři funkce přihlášení pro... Rezervace letu aplikace z Testování série, kde se skript musí větvit do cesty negativního scénáře, když se zobrazí dialogové okno s chybou, nebo do cesty pozitivního scénáře, když se tak nestane. To přesně odráží Scénář testu popsané ve videu výše.

  1. Nahrajte dva samostatné skripty: jeden, který se přihlašuje s platnou kombinací jména agenta a hesla, a druhý, který se přihlašuje s neplatnou kombinací.
  2. Vložte krok If Else bezprostředně za krok přihlášení, aby oba záznamy mohly běžet v jednom kombinovaném skriptu.
  3. Nastavte podmínku pro kontrolu existence okna s informacemi o chybě pomocí Existovat vlastnost místo kroku Click.
  4. Přesuňte kroky negativního scénáře, jako je zavření chybového okna a přihlašovacího dialogu, do bloku If.
  5. Přesuňte kroky pozitivního scénáře, jako je například zavření okna Rezervace letu, do bloku Else.
  6. Uložte kombinovaný skript a spusťte ho s platnou i neplatnou sadou přihlašovacích údajů, abyste ověřili, že se každá cesta provede správně.
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

Kromě If a Else podporuje VBScript také While…Wend a Pro…Další smyčky pro opakování a příkazy ElseIf a Select Case popsané výše pro další větvení. Kombinace těchto konstrukcí s vlastností Exist umožňuje jeden UFT/QTP Skript zvládne pozitivní i negativní testovací scénář bez manuálního zásahu.

⚠ Poznámka: Předání delší hodnoty funkci Exist, například Exist(10), způsobí UFT Čekejte na objekt déle, než vrátíte hodnotu False, což je užitečné pro pomalu se načítající dialogy, ale pokud se použije v každém kroku, může to zpomalit celou sadu. Dlouhé čekání vyhraďte pro skutečně pomalé objekty. Krátký, dobře zvolený časový limit udržuje kombinovaný skript pozitivního a negativního scénáře spolehlivý a rychlý pro spuštění v nepřetržitých testovacích běhech.

Nejčastější dotazy

Funkce ElseIf vyhodnocuje podmínky postupně a zastaví se na první shodě, což je rychlejší a přehlednější než několik nezávislých bloků If. Samostatné příkazy If používejte pouze tehdy, když spolu podmínky nesouvisejí a každá z nich musí být zkontrolována.

Exist používá UFT Výchozí časový limit synchronizace, obvykle několik sekund, pokud není v závorkách předána vlastní hodnota, například Exist(10), aby se na pomalu načítající objekt čekalo déle.

Ano. Asistenti umělé inteligence mohou navrhovat bloky If, ElseIf a Select Case z popisu testovací logiky v jednoduchém jazyce, i když testeři by si měli před spuštěním skriptu ověřit názvy objektů, vlastnosti a hodnoty časového limitu.

Nástroje umělé inteligence dokáží prohledat skript, označit neshodné příkazy End If a nedosažitelné bloky Else a navrhnout opravy, což urychluje ladění ve srovnání s manuální kontrolou dlouhých skriptů řádek po řádku.

Ano. Použijte klíčové slovo Is uvnitř řádku Case, například Case Is > 90, pro nalezení všech hodnot nad prahovou hodnotou, namísto jejich zobrazení jednotlivě.

Shrňte tento příspěvek takto: