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.

  • 🔀 Sintaxa de baza: If…Then se împerechează cu un bloc opțional Else și se închide cu End If, rulând exact o ramură per evaluare.
  • 🧮 Condiții multiple: ElseIf verifică condițiile de sus în jos și se oprește la prima potrivire True, înlocuind lanțuri lungi de blocuri If separate.
  • 🪆 Logică imbricată: Plasarea unui If în interiorul unei alte secțiuni Then sau Else gestionează verificările dependentelor; păstrați imbricarea la două sau trei niveluri pentru lizibilitate.
  • 🎯 Selectați cazul: Compară o variabilă cu mai multe valori fixe și se citește mai clar decât un lanț ElseIf lung.
  • 🔍 Proprietate existentă: Returnează True sau False pentru a stabili dacă un obiect este pe ecran, condiția standard pentru ramificarea If Else.
  • 🧪 Exemplu aplicat: Combinați If Else cu Exist pentru a direcționa automat un script către o cale de conectare negativă sau pozitivă cu rezervare de zbor.
  • 🤖 Asistență AI: Instrumentele de inteligență artificială pot redacta blocurile If Else și Select Case și pot semnala instrucțiunile End If lipsă în timpul depanării.

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.

  1. Î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ă.
  2. 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.
  3. Setați condiția pentru a verifica dacă fereastra Informații despre eroare există, utilizând Exista proprietate în loc de un pas Click.
  4. Mută ​​pașii scenariilor negative, cum ar fi închiderea ferestrei de eroare și a dialogului de conectare, în interiorul blocului If.
  5. Mută ​​pașii scenariilor pozitive, cum ar fi închiderea ferestrei Rezervare zbor, în interiorul blocului Altfel.
  6. 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.

Întrebări frecvente

ElseIf evaluează condițiile în secvență și se oprește la prima potrivire, fiind mai rapid și mai clar decât mai multe blocuri If independente. Folosiți instrucțiuni If separate doar atunci când condițiile nu au legătură și fiecare dintre ele trebuie verificată.

Există folosește UFT timeout implicit pentru sincronizare, de obicei câteva secunde, cu excepția cazului în care o valoare personalizată, cum ar fi Existent(10), este transmisă între paranteze pentru a aștepta mai mult timp un obiect cu încărcare lentă.

Da. Asistenții inteligenți artificiali pot redacta blocurile If, ​​ElseIf și Select Case dintr-o descriere în limbaj simplu a logicii de testare, deși testerii ar trebui să verifice în continuare numele obiectelor, proprietățile și valorile de timeout înainte de a rula scriptul.

Instrumentele de inteligență artificială pot scana un script, pot semnala instrucțiunile End If nepotrivite și blocurile Else inaccesibile și pot sugera remedieri, ceea ce accelerează depanarea în comparație cu o revizuire manuală linie cu linie a scripturilor lungi.

Da. Folosește cuvântul cheie Is în interiorul unei linii Case, de exemplu Case Is > 90, pentru a potrivi fiecare valoare peste un prag în loc să o listezi pe fiecare în parte.

Rezumați această postare cu: