DACĂ, Altfel, Sfârșit DACĂ, Există în QTP/UFT cu Exemplu
⚡ Rezumat inteligent
IF Else End Instrucțiunile If permit UFT și QTP Scripturile se ramifică pe baza condițiilor de execuție, în timp ce proprietatea Exist verifică dacă un obiect apare pe ecran înainte de executarea ramurii, acoperind și ElseIf, nested If și Select Case.

Ce este instrucțiunea IF Else în UFT/QTP?
Instrucțiunea IF Else este cea mai comună structură de control condițional în VBScript, limbajul de scripting folosit pentru a scrie UFT/QTP scripturi de automatizare. Permite unui script să ia o decizie în timpul execuției: când o condiție se evaluează ca Adevărat, se execută un bloc de instrucțiuni, iar când se evaluează ca Fals, se execută un alt bloc. Testerii se bazează constant pe această construcție, de exemplu, pentru a ramifica un script atunci când o conectare reușește față de atunci când eșuează sau când un obiect poate sau nu să apară pe ecran. Pentru lista completă a instrucțiunilor condiționale și a operatorilor de comparație acceptați de VBScript, consultați Instrucțiune condițională VBScript ghid.
Forma de bază combină If…Then cu un bloc opțional Else și se închide întotdeauna cu End If. UFT/QTP evaluează condiția o singură dată. Dacă este True, se execută doar instrucțiunile dintre Then și Else; dacă este False, se execută doar instrucțiunile dintre Else și End If și se execută o singură ramură. Sintaxa de mai jos verifică o valoare numerică și afișează o casetă de mesaj diferită pentru fiecare rezultat.
Dim iValue iValue = 25 If iValue > 18 Then MsgBox "Eligible" Else MsgBox "Not Eligible" End If
In UFT/QTP, condiția compară aproape întotdeauna o proprietate a obiectului, un rezultat al unui punct de control sau valoarea returnată de proprietatea Exist, mai degrabă decât un număr simplu, deoarece majoritatea scripturilor validează o aplicație testată în loc să facă calcule aritmetice. Fiecare exemplu de mai jos pe această pagină se bazează pe același model If…Then…Else…End If prezentat mai sus; doar condiția se schimbă. Indiferent de condiția pe care o utilizați, testați întotdeauna ambele căi, Adevărat și Fals, cel puțin o dată înainte de a muta scriptul într-o suită de regresie.
IF…Then…ElseIf…Else Instrucțiune în UFT/QTP
O instrucțiune If Else simplă alege doar între două rezultate. Când un script trebuie să testeze trei sau mai multe condiții care se exclud reciproc, VBScript adaugă ElseIf în același bloc. UFT/QTP verifică fiecare condiție de sus în jos și rulează primul bloc a cărui condiție este True; fiecare alt bloc, inclusiv blocul Else de la sfârșit, este omis. Acest lucru face ca un script să fie mult mai ușor de citit decât imbricarea mai multor blocuri If fără legătură unul în interiorul celuilalt.
- Condițiile sunt evaluate de sus în jos, iar evaluarea se oprește la prima condiție care este Adevărată.
- Fiecare cuvânt cheie ElseIf are nevoie de propriul său cuvânt Then și de propria sa condiție.
- Comandă Else finală este opțională și rulează numai atunci când niciuna dintre condițiile de mai sus nu se îndeplinește.
- Doar un singur End If închide întregul bloc, indiferent de câte ramuri ElseIf conține.
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
Scriptul de mai sus afișează o notă diferită pentru fiecare interval de scoruri și oprește verificarea condițiilor suplimentare în momentul în care o ramură se evaluează ca Adevărat, ceea ce menține arborii de decizie mari eficienți chiar și în cadrul unei rulări lungi de automatizare.
Același model se aplică direct verificărilor UI: un script ar putea citi valoarea unui câmp de stare și ar putea utiliza ElseIf pentru a direcționa către gestionarea de tip pass, warning sau failed, în funcție de textul pe care îl găsește, în loc de trei blocuri If separate care reevaluează fiecare câmpul independent.
Instrucțiune If imbricată în UFT/QTP
Un bloc If imbricat plasează un bloc If…End If complet în secțiunea Then sau Else a unui alt bloc If. UFT/QTP rezolvă mai întâi condiția externă și evaluează doar valoarea internă „If” atunci când se intră în ramura externă. Acest model se potrivește verificărilor care depind unele de altele, cum ar fi confirmarea faptului că un utilizator are vârsta suficientă pentru a vota și apoi ramificarea din nou în funcție de sex, în loc să combine fiecare condiție într-o singură expresie lungă cu „Și” și „Sau”. Mențineți imbricarea superficială, în general nu mai mult de două sau trei niveluri, deoarece fiecare strat suplimentar face ca un script să fie mai greu de implementat. trace și depanare. În UFT/QTP în termeni de termeni, un If imbricat verifică de obicei mai întâi sistemul de operare și apoi se ramifică din nou în funcție de starea browserului sau a aplicației, astfel încât blocul intern rulează numai după confirmarea contextului extern.
💡 Sfat: Indentați fiecare bloc imbricat cu un nivel suplimentar și atribuiți fiecărui End If propria linie. Indentarea consistentă este cea mai rapidă modalitate de a detecta un End If lipsă înainte ca scriptul să eșueze la momentul execuției.
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
Selectați declarația de caz în UFT/QTP
Select Case este o alternativă la un lanț ElseIf lung în care fiecare ramură testează aceeași variabilă unică în raport cu o valoare fixă diferită. UFT/QTP evaluează expresia de pe linia Select Case o dată, apoi o compară cu fiecare valoare Case în ordine și rulează primul bloc care se potrivește. O instrucțiune Case Else opțională prinde orice valoare pe care niciunul dintre cazurile listate nu o acoperă, similar cu instrucțiunea Else finală dintr-un bloc If. Deoarece variabila de comparație este scrisă o singură dată, un bloc Select Case lung este, de asemenea, mai ușor de actualizat ulterior decât un lanț echivalent de instrucțiuni ElseIf care repetă același nume de variabilă în fiecare ramură.
Valorile majusculelor și minusculelor sunt comparate folosind egalitatea și sunt sensibile la majuscule și minuscule, așadar „Chrome” și „chrome” sunt considerate potriviri diferite, cu excepția cazului în care valoarea este normalizată mai întâi, de exemplu cu funcția LCase. Consultați Declarație de variabilă VBScript ghid despre modul în care Dim și tipurile de date afectează aceste comparații.
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
| AFIRMAȚIE | CEL MAI BUN PENTRU | NUMĂR DE CONDIȚII | LIZIBILITATE LA SCARĂ |
|---|---|---|---|
| Dacă…Altfel | Două rezultate | Condiție 1 | Înalt |
| Dacă…AltfelDacă…Altfel | Mai multe afecțiuni fără legătură | 3 sau mai multe condiții | Picături pe măsură ce ramurile cresc |
| Selectați cazul | Mai multe valori fixe ale unei variabile | Orice număr | Rămâne ridicat |
De asemenea, „Case” poate potrivi un interval folosind cuvântul cheie „Is”, de exemplu „Case Is > 90” în interiorul unui bloc „Select Case”, ceea ce permite unui singur caz să acopere fiecare valoare peste un prag în loc să o listezeze pe fiecare în parte.
Alegeți opțiunea Selectare caz ori de câte ori un script testează o variabilă în raport cu mai multe valori posibile; păstrați opțiunea If…ElseIf pentru condițiile care compară diferite variabile sau utilizează intervale și operatori logici.
Cum se utilizează IF Else cu proprietatea Exist în UFT
Clic aici dacă videoclipul nu este accesibil
Proprietatea Exist returnează True sau False în funcție de prezența curentă a unui obiect în aplicația testată, ceea ce o face condiția naturală de asociat cu If Else. Exemplul de mai jos reia scenariul clasic al funcționalității de conectare pentru Rezervare de zbor cerere din Testarea serie, unde un script trebuie să se ramifice într-o cale de scenariu negativ atunci când apare o casetă de dialog de eroare sau într-o cale de scenariu pozitiv atunci când nu apare. Aceasta reflectă exact Scenariu de testare prezentate în videoclipul de mai sus.
- Înregistrați două scripturi separate: unul care se conectează cu o combinație validă de nume de agent și parolă și unul care se conectează cu o combinație invalidă.
- Introduceți un pas If Else imediat după pasul de conectare, astfel încât ambele înregistrări să poată rula într-un singur script combinat.
- Setați condiția pentru a verifica dacă fereastra Informații despre eroare există, utilizând Exista proprietate în loc de un pas Click.
- Mută pașii scenariilor negative, cum ar fi închiderea ferestrei de eroare și a dialogului de conectare, în interiorul blocului If.
- Mută pașii scenariilor pozitive, cum ar fi închiderea ferestrei Rezervare zbor, în interiorul blocului Altfel.
- Salvați scriptul combinat și rulați-l atât pentru un set de acreditări valid, cât și pentru unul invalid, pentru a confirma că fiecare cale se execută corect.
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
Pe lângă If și Else, VBScript suportă și While…Wend și Pentru…Următoarele bucle pentru repetiție, plus instrucțiunile ElseIf și Select Case menționate mai sus pentru ramificații suplimentare. Combinarea acestor construcții cu proprietatea Exist este ceea ce permite unei singure UFT/QTP Scriptul gestionează atât un scenariu de test pozitiv, cât și unul negativ, fără intervenție manuală.
⚠ Notă: Transmiterea unei valori mai lungi către Exist, cum ar fi Exist(10), face ca UFT așteptați mai mult timp pentru un obiect înainte de a returna False, ceea ce este util pentru dialogurile cu încărcare lentă, dar poate încetini întreaga suită dacă este utilizat la fiecare pas. Rezervați așteptări lungi pentru obiectele cu adevărat lente. Un timeout scurt, bine ales, menține scriptul combinat al scenariului pozitiv și negativ atât fiabil, cât și rapid de executat în teste continue.
