HVIS, Ellers, Slut HVIS, Findes i QTP/UFT med Eksempel

โšก Smart opsummering

IF Else End If-sรฆtninger lad UFT og QTP Scripts forgrener sig baseret pรฅ runtime-betingelser, mens egenskaben Exist kontrollerer, om et objekt vises pรฅ skรฆrmen, fรธr forgreningen udfรธres, hvilket ogsรฅ dรฆkker ElseIf, indlejrede If og Select Case.

  • ๐Ÿ”€ Grundlรฆggende syntaks: Ifโ€ฆThen parres med en valgfri Else-blok og lukkes med End If, hvorved der kรธres prรฆcis รฉn branch pr. evaluering.
  • ๐Ÿงฎ Flere betingelser: ElseIf kontrollerer betingelserne fra top til bund og stopper ved den fรธrste True-match, hvorved lange kรฆder af separate If-blokke erstattes.
  • ๐Ÿช† Indlejret logik: Placering af en If (If) i en anden Then- eller Else-sektion hรฅndterer afhรฆngige kontroller; hold indlejringen til to eller tre niveauer for at sikre lรฆsbarhed.
  • ๐ŸŽฏ Vรฆlg sag: Sammenligner รฉn variabel med flere faste vรฆrdier og aflรฆses tydeligere end en lang ElseIf-kรฆde.
  • ๐Ÿ” Eksisterende ejendom: Returnerer Sandt eller Falsk for om et objekt er pรฅ skรฆrmen, standardbetingelsen for If Else-forgrening.
  • ๐Ÿงช Anvendt eksempel: Kombiner If Else med Exist for automatisk at dirigere et script til en negativ eller positiv loginsti for flyreservation.
  • ๐Ÿค– AI assistance: AI-vรฆrktรธjer kan udarbejde If Else- og Select Case-blokke og markere manglende End If-sรฆtninger under fejlfinding.

Hvad er IF Else-sรฆtningen i UFT/QTP?

IF Else-sรฆtningen er den mest almindelige betingede kontrolstruktur i VBScript, det scriptsprog, der bruges til at skrive UFT/QTP automatiseringsscripts. Det lader et script trรฆffe en beslutning under kรธrsel: Nรฅr en betingelse evalueres til True, kรธres รฉn blok af udsagn, og nรฅr den evalueres til False, kรธres en anden blok i stedet. Testere er konstant afhรฆngige af denne konstruktion, for eksempel for at forgrene et script, nรฅr et login lykkes versus nรฅr det mislykkes, eller nรฅr et objekt muligvis vises eller ikke vises pรฅ skรฆrmen. For den komplette liste over betingede udsagn og sammenligningsoperatorer, som VBScript understรธtter, se VBScript-betinget sรฆtning guide.

Basisformen parrer Ifโ€ฆThen med en valgfri Else-blok og lukker altid med End If. UFT/QTP evaluerer betingelsen รฉn gang. Hvis den er True, kรธres kun sรฆtningerne mellem Then og Else; hvis den er False, kรธres kun sรฆtningerne mellem Else og End If, og kun รฉn gren udfรธres nogensinde. Syntaksen nedenfor kontrollerer en numerisk vรฆrdi og viser en forskellig meddelelsesboks for hvert resultat.

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

In UFT/QTP, sammenligner betingelsen nรฆsten altid en objektegenskab, et kontrolpunktsresultat eller returvรฆrdien af โ€‹โ€‹โ€‹โ€‹egenskaben Exist i stedet for et almindeligt tal, da de fleste scripts validerer en applikation under test i stedet for at udfรธre aritmetiske opgaver. Hvert eksempel lรฆngere nede pรฅ denne side bygger pรฅ det samme Ifโ€ฆThenโ€ฆElseโ€ฆEnd If-mรธnster vist ovenfor; kun betingelsen รฆndres. Uanset hvilken betingelse du bruger, skal du altid teste bรฅde True- og False-stierne mindst รฉn gang, fรธr du flytter scriptet til en regressionssuite.

HVISโ€ฆSรฅโ€ฆEllersHvisโ€ฆEllers-sรฆtning i UFT/QTP

En almindelig If Else vรฆlger kun mellem to udfald. Nรฅr et script skal teste tre eller flere gensidigt udelukkende betingelser, tilfรธjer VBScript ElseIf til den samme blok. UFT/QTP kontrollerer hver betingelse fra top til bund og kรธrer den fรธrste blok, hvis betingelse er True; alle andre bloker, inklusive den efterfรธlgende Else, springes over. Dette gรธr et script langt mere lรฆsbart end at indlejre flere ikke-relaterede If-blokke indeni hinanden.

  • Betingelser evalueres fra top til bund, og evalueringen stopper ved den fรธrste betingelse, der er Sand.
  • Hvert ElseIf-nรธgleord skal have sit eget Then og sin egen betingelse.
  • Den efterfรธlgende Else er valgfri og kรธrer kun, nรฅr ingen af โ€‹โ€‹betingelserne ovenfor matcher.
  • Kun รฉn End If lukker hele blokken, uanset hvor mange ElseIf-grene den indeholder.
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

Ovenstรฅende script udskriver en forskellig karakter for hvert scoreinterval og stopper med at kontrollere yderligere betingelser i det รธjeblik, en gren evalueres til True, hvilket holder store beslutningstrรฆer effektive, selv i en lang automatiseringskรธrsel.

Det samme mรธnster gรฆlder direkte for UI-tjek: et script kan lรฆse et statusfelts vรฆrdi og bruge ElseIf til at dirigere til bestรฅet, advarsel eller fejlbehandling afhรฆngigt af den tekst, det finder, i stedet for tre separate If-blokke, der hver isรฆr revurderer feltet uafhรฆngigt af hinanden.

Indlejret If-sรฆtning i UFT/QTP

En indlejret If placerer en komplet Ifโ€ฆEnd If-blok inde i Then- eller Else-sektionen af โ€‹โ€‹en anden If-blok. UFT/QTP lรธser den ydre betingelse fรธrst og evaluerer kun den indre If, โ€‹โ€‹nรฅr den ydre gren indtastes. Dette mรธnster passer til kontroller, der afhรฆnger af hinanden, sรฅsom at bekrรฆfte, at en bruger er gammel nok til at stemme, og derefter forgrene sig igen efter kรธn, i stedet for at kombinere hver betingelse i รฉt langt udtryk med Og og Eller. Hold indlejringen overfladisk, generelt ikke mere end to eller tre niveauer, fordi hvert ekstra lag gรธr et script svรฆrere at trace og fejlfinding. I UFT/QTP I vilkรฅr og betingelser kontrollerer en indlejret If normalt fรธrst operativsystemet og forgrener sig derefter igen afhรฆngigt af browser- eller applikationstilstand, sรฅ den indre blok kรธrer kun, nรฅr den ydre kontekst er bekrรฆftet.

๐Ÿ’ก Tip: Indryk hver indbygget blok med et ekstra niveau, og giv hver End If sin egen linje. Konsekvent indrykning er den hurtigste mรฅde at fange en manglende End If, fรธr scriptet fejler under kรธrsel.

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

Vรฆlg sagserklรฆring i UFT/QTP

Select Case er et alternativ til en lang ElseIf-kรฆde, hvor hver gren tester den samme enkeltvariabel mod en forskellig fast vรฆrdi. UFT/QTP evaluerer udtrykket pรฅ Select Case-linjen รฉn gang, sammenligner det derefter med hver Case-vรฆrdi i rรฆkkefรธlge og kรธrer den fรธrste blok, der matcher. En valgfri Case Else fanger enhver vรฆrdi, som ingen af โ€‹โ€‹de anfรธrte cases dรฆkker, svarende til den efterfรธlgende Else i en If-blok. Fordi sammenligningsvariablen kun skrives รฉn gang, er en lang Select Case-blok ogsรฅ nemmere at opdatere senere end en tilsvarende kรฆde af ElseIf-udsagn, der gentager det samme variabelnavn i hver gren.

Vรฆrdier for store og smรฅ bogstaver sammenlignes ved at bruge lighed og skelner mellem store og smรฅ bogstaver, sรฅ "Chrome" og "chrome" tรฆller som forskellige match, medmindre vรฆrdien normaliseres fรธrst, for eksempel med LCase-funktionen. Se VBScript-variabeldeklaration en vejledning til, hvordan Dim og datatyper pรฅvirker disse sammenligninger.

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
UDMELDING Bedste FOR ANTAL BETINGELSER Lร†SBARHED I SKALA
Hvisโ€ฆEllers To resultater 1 betingelse Hรธj
Hvisโ€ฆEllersHvisโ€ฆEllers Flere uafhรฆngige tilstande 3 eller flere betingelser Drรฅber efterhรฅnden som grenene vokser
Vรฆlg sag Mange faste vรฆrdier af รฉn variabel Ethvert nummer Holder sig hรธjt

Case kan ogsรฅ matche et omrรฅde ved hjรฆlp af Is-nรธgleordet, for eksempel Case Is > 90 i en Select Case-blok, hvilket lader et enkelt case dรฆkke alle vรฆrdier over en tรฆrskel i stedet for at liste hver enkelt individuelt.

Vรฆlg Vรฆlg store/smรฅ bogstaver, nรฅr et script tester รฉn variabel mod mange mulige vรฆrdier; behold Hvisโ€ฆEllers Hvis for betingelser, der sammenligner forskellige variabler eller bruger intervaller og logiske operatorer.

Sรฅdan bruger du IF Else med Exist-egenskaben i UFT

Klik link. hvis videoen ikke er tilgรฆngelig

Egenskaben Exist returnerer True eller False afhรฆngigt af om et objekt i รธjeblikket er til stede i den applikation, der testes, hvilket gรธr det til den naturlige betingelse at parre med If Else. Eksemplet nedenfor gennemgรฅr det klassiske loginfunktionalitetsscenarie for Flyreservation ansรธgning fra Test serie, hvor et script skal forgrene sig til en negativ scenariesti, nรฅr en fejldialogboks vises, eller en positiv scenariesti, nรฅr den ikke gรธr det. Dette afspejler den nรธjagtige Testscenarie dรฆkket i videoen ovenfor.

  1. Optag to separate scripts: et, der logger ind med en gyldig kombination af agentnavn og adgangskode, og et, der logger ind med en ugyldig kombination.
  2. Indsรฆt et If Else-trin umiddelbart efter login-trinnet, sรฅ begge optagelser kan kรธre i et enkelt kombineret script.
  3. Angiv betingelsen for at kontrollere, om vinduet Fejlinformation findes, ved hjรฆlp af Eksisterer egenskab i stedet for et Click-trin.
  4. Flyt trinnene i det negative scenarie, sรฅsom at lukke fejlvinduet og login-dialogboksen, inden for If-blokken.
  5. Flyt trinnene i det positive scenarie, sรฅsom at lukke vinduet for flyreservation, ind i Ellers-blokken.
  6. Gem det kombinerede script, og kรธr det mod bรฅde et gyldigt og et ugyldigt legitimationsoplysninger for at bekrรฆfte, at hver sti udfรธres korrekt.
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

Udover If og Else understรธtter VBScript ogsรฅ Whileโ€ฆWend og Forโ€ฆNรฆste lรธkker til gentagelse, plus ElseIf- og Select Case-sรฆtningerne, der er beskrevet ovenfor, til ekstra grene. Kombinationen af โ€‹โ€‹disse konstruktioner med Exist-egenskaben er det, der giver en enkelt UFT/QTP Scriptet hรฅndterer bรฅde et positivt og et negativt testscenarie uden manuel indgriben.

โš  Bemรฆrk: Hvis man sender en lรฆngere vรฆrdi til Exist, sรฅsom Exist(10), bliver UFT Vent lรฆngere pรฅ et objekt, fรธr False returneres, hvilket er nyttigt til langsomt indlรฆste dialoger, men kan forsinke hele pakken, hvis det bruges pรฅ hvert trin. Reserver lange ventetider for virkelig langsomme objekter. En kort, velvalgt timeout holder det kombinerede positive og negative scenariescript bรฅde pรฅlideligt og hurtigt at udfรธre i kontinuerlige testkรธrsler.

Ofte Stillede Spรธrgsmรฅl

ElseIf evaluerer betingelser i rรฆkkefรธlge og stopper ved fรธrste match, hvilket gรธr det hurtigere og tydeligere end flere uafhรฆngige If-blokke. Brug kun separate If-udsagn, nรฅr betingelserne ikke er relaterede, og hver enkelt af dem skal kontrolleres.

Eksisterer bruger UFT Standard synkroniseringstimeout, typisk et par sekunder, medmindre en brugerdefineret vรฆrdi som f.eks. Exist(10) angives i parenteserne for at vente lรฆngere pรฅ et objekt, der indlรฆses langsomt.

Ja. AI-assistenter kan udarbejde If-, ElseIf- og Select Case-blokke ud fra en letforstรฅelig beskrivelse af testlogikken, selvom testere stadig bรธr verificere objektnavne, egenskaber og timeout-vรฆrdier, fรธr de kรธrer scriptet.

AI-vรฆrktรธjer kan scanne et script, markere uoverensstemmende End If-sรฆtninger og uopnรฅelige Else-blokke og foreslรฅ rettelser, hvilket fremskynder fejlfinding sammenlignet med en manuel linje-for-linje-gennemgang af lange scripts.

Ja. Brug nรธgleordet Is i en Case-linje, for eksempel Case Is > 90, til at matche alle vรฆrdier over en tรฆrskel i stedet for at liste hver enkelt individuelt.

Opsummer dette indlรฆg med: