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.

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.
- 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í.
- Vložte krok If Else bezprostředně za krok přihlášení, aby oba záznamy mohly běžet v jednom kombinovaném skriptu.
- Nastavte podmínku pro kontrolu existence okna s informacemi o chybě pomocí Existovat vlastnost místo kroku Click.
- 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.
- Přesuňte kroky pozitivního scénáře, jako je například zavření okna Rezervace letu, do bloku Else.
- 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.
