Verifiera Element Present & waitFor Command in Selenium

โšก Smart sammanfattning

Verifiera att elementet finns och waitFor-kommandon i Selenium IDE bekrรคftar att en sida innehรฅller de element och den text som ett test fรถrvรคntar sig, och pausar uppspelningen tills ett dynamiskt villkor uppfylls innan nรคsta steg kรถrs.

  • ๐Ÿ”˜ Elementkontroller: verifyElementPresent returnerar TRUE nรคr lokaliseringsfunktionen matchar nรฅgot pรฅ sidan, och verifyElementNotPresent รคr dess exakta invers.
  • โ˜‘๏ธ Textkontroller: verifyTextPresent sรถker igenom hela sidan och รคr skiftlรคgeskรคnsligt, sรฅ โ€Atlantaโ€ matchar aldrig โ€atlantaโ€.
  • โœ… Positionskontroller: verifyElementPositionLeft och verifyElementPositionTop jรคmfรถr ett elements pixelfรถrskjutning frรฅn sidkanten.
  • ๐Ÿงช Sidladdningar: andWait-kommandon som clickAndWait pausar skriptet tills en ny sida har laddats klart.
  • ๐Ÿ› ๏ธ Dynamiskt innehรฅll: waitFor-kommandon vรคntar pรฅ ett villkor istรคllet fรถr en sidinlรคsning, vilket passar AJAX-skรคrmar som aldrig laddas om.
  • ๐Ÿ“Š Nuvarande IDE: Webblรคsartillรคgget byter namn pรฅ dessa steg och ger varje vรคntekommando en egen millisekunds timeout.

Verifiera att elementet finns och waitFor-kommandot i Selenium IDE

A inspelad Selenium IDE skriptet klickar och skriver, men avgรถr aldrig pรฅ egen hand om programmet betedde sig korrekt. Tvรฅ kommandofamiljer gรถr det jobbet: verifiera kommandon, som kontrollerar sidans tillstรฅnd, och vรคnta kommandon, som hรฅller kรถrningen inne tills sidan รคr redo att kontrolleras.

โš ๏ธ En anmรคrkning om versioner: Skรคrmdumparna nedan kommer frรฅn originalet Firefox-plugin Selenium IDE, som inte lรคngre distribueras, och de anvรคnder dess camelCase Selenese-namn. Den nuvarande IDE:n รคr en Chrome, Firefox och Edge webbplatstillรคggBeteendet som beskrivs hรคr gรคller fortfarande, men flera kommandonamn har รคndrats โ€” en kartaping Tabellen visas senare i den hรคr artikeln, och alla ursprungliga kommandon och skรคrmdumpar bevaras exakt som de publicerades.

Verifiera nรคrvaron av ett element

Vi kan anvรคnda fรถljande tvรฅ kommandon fรถr att verifiera nรคrvaron av ett element:

  • verifyElementPresent โ€“ returnerar TRUE om det angivna elementet hittades pรฅ sidan; FALSK om annat
  • verifyElementNotPresent โ€“ returnerar TRUE om det angivna elementet INTE HITTS nรฅgonstans pรฅ sidan; FALSK om det finns.

Bรฅda kommandona tar ett element locator i Target fรคlt โ€” ett id, ett namn, en CSS-vรคljare, en lรคnktext eller ett XPath uttryck โ€” och ingetdera behรถver ett vรคrde.

Testskriptet nedan verifierar att textrutan Anvรคndarnamn finns i Mercury Tours hemsida medan textrutan Fรถrnamn inte รคr det. Textrutan Fรถrnamn รคr faktiskt ett element som finns pรฅ registreringssidan fรถr Mercury Turer, inte pรฅ hemsidan.

Selenium IDE-skript med verifyElementPresent i rutan anvรคndarnamn och verifyElementNotPresent i rutan Fรถrnamn

Fรถr det รคr dessa verifiera kommandon snarare รคn hรคvda kommandon, skrivs ett fel till loggen och de รฅterstรฅende stegen kรถrs fortfarande. Den skillnaden behandlas i detalj lรคngre ner.

Verifiera nรคrvaron av en viss text i kommandot i Selenium

Att kontrollera att ett element existerar รคr inte alltid tillrรคckligt โ€“ ett test behรถver ofta bekrรคfta de ord som visas fรถr anvรคndaren. Tvรฅ textkommandon tรคcker det fallet.

  • verifieraTextPresent โ€“ returnerar TRUE om den angivna textstrรคngen hittades nรฅgonstans pรฅ sidan; FALSK om annat
  • verifyTextNotPresent โ€“ returnerar TRUE om den angivna textstrรคngen INTE HITTS nรฅgonstans pรฅ sidan; FALSK om den hittades

Kom ihรฅg att dessa kommandon รคr skiftlรคgeskรคnsliga.

Loggen nedan visar samma sida kontrollerad tvรฅ gรฅnger med tvรฅ stavningar av samma fras.

Selenium IDE-logg som visar att verifyTextPresent skickas fรถr Atlanta till Las Vegas och misslyckas fรถr Atlanta till Las Vegas

I scenariot ovan behandlades "Atlanta till Las Vegas" annorlunda รคn "atlanta till Las Vegas" eftersom bokstaven "A" i "Atlanta" var stor i den fรถrsta och liten i den andra. Nรคr kommandot verifyTextPresent anvรคndes pรฅ var och en av dem, godkรคndes den ena medan den andra misslyckades.

Verifiera specifik position fรถr ett element

Layoutfel bryter sรคllan en lokalisering, sรฅ nรคrvarokontroller missar dem. Positionskommandon tรคcker det gapet.

Selenium IDE anger positionen fรถr ett element genom att mรคta (i pixlar) hur lรฅngt det รคr frรฅn vรคnstra eller รถvre kanten av webblรคsarfรถnstret.

  • verifyElementPositionLeft โ€“ verifierar om det angivna antalet pixlar matchar elementets avstรฅnd frรฅn sidans vรคnstra kant. Detta kommer att returnera FALSE om det angivna vรคrdet inte matchar avstรฅndet frรฅn den vรคnstra kanten.
  • verifyElementPositionTop โ€“ verifierar om det angivna antalet pixlar matchar elementets avstรฅnd frรฅn sidans รถverkant. Detta returnerar FALSE om det angivna vรคrdet inte matchar avstรฅndet frรฅn den รถvre kanten.

Skriptet nedan registrerar de fรถrvรคntade pixelfรถrskjutningarna i kolumnen Vรคrde.

Selenium IDE-steg med verifyElementPositionLeft och verifyElementPositionTop med pixelvรคrden i kolumnen Value

Hantera dessa tvรฅ kommandon med fรถrsiktighet. En pixelfรถrskjutning รคndras med fรถnsterstorleken, zoomnivรฅn och de installerade teckensnitten, sรฅ ett hรฅrdkodat tal som skickas pรฅ en maskin kan misslyckas pรฅ en annan.

Vรคnta kommandon in Selenium

Ett verify-kommando kan bara inspektera det som redan finns pรฅ skรคrmen, sรฅ en kontroll som kรถrs fรถr tidigt misslyckas trots att applikationen fungerar. Wait-kommandon lรถser det tidsproblemet.

Fรถljande รคr typerna av vรคntekommandon i Selenium

och Vรคnta kommandon

Dessa รคr kommandon som vรคntar pรฅ att en ny sida laddas innan du gรฅr vidare till nรคsta kommando.

Exempel รคr

  • klicka och vรคnta
  • typAndWait
  • vรคlj och vรคnta

Var och en av dem รคr ett vanligt รฅtgรคrdskommando med suffixet AndWait bifogat, vilket det inspelade steget nedan visar.

Inspelat clickAndWait-steg som hรฅller in Selenium IDE-skript tills nรคsta sida รคr klar med laddningen

vรคnta pรฅ kommandon

Dessa รคr kommandon som vรคntar pรฅ att ett specificerat villkor blir sant innan du fortsรคtter till nรคsta kommando (oavsett om en ny sida laddas). Dessa kommandon รคr mer lรคmpliga att anvรคnda pรฅ AJAX-baserade dynamiska webbplatser som รคndrar vรคrden och element utan att ladda om hela sidan. Exempel inkluderar:

  • waitForTitle
  • waitForTextPresent
  • vรคnta pรฅ varning

Tรคnk pรฅ Facebook-scenariot nedan.

Facebook-registreringsformulรคr som visar lรคnken Varfรถr mรฅste jag ange min fรถdelsedag innan nรฅgon klickar pรฅ den

Vi kan anvรคnda en kombination av "klick" och "waitForTextPresent" fรถr att verifiera nรคrvaron av texten "Ange din fรถdelsedag".

Selenium IDE-steg fรถr att para ihop klicka med waitForTextPresent fรถr att vรคnta pรฅ texten "Providing your birthday"

Vi kan inte anvรคnda clickAndWait eftersom ingen sida laddades nรคr du klickade pรฅ "Varfรถr behรถver jag ange min fรถdelsedag?" lรคnk. Om vi โ€‹โ€‹gรถr det kommer testet att misslyckas

Samma regel gรคller fรถr allt innehรฅll som injiceras via skript snarare รคn via navigering, vilket รคr anledningen till AJAX-drivna skรคrmar behรถver nรคstan alltid waitFor snarare รคn andWait.

Assert vs Verify vs waitFor-kommandon i Selenium IDE

Nybรถrjare vรคljer ofta fel familj och undrar sedan varfรถr en svit stannar vid den fรถrsta defekten, eller varfรถr den rapporterar tjugo fel som alla trace tillbaka till ett. De tre prefixen svarar pรฅ tre olika frรฅgor.

Prefix Vad den gรถr Vid fel Anvรคnds bรคst till
hรคvda Kontrollerar ett tillstรฅnd omedelbart Loggar felet och stoppar testfallet Fรถrutsรคttningar โ€” en inloggning som mรฅste lyckas innan nรฅgot annat blir meningsfullt
verifiera Kontrollerar ett tillstรฅnd omedelbart Loggar felet och fortsรคtter med nรคsta kommando Oberoende kontroller, till exempel flera etiketter pรฅ en bekrรคftelsesida
vรคntaPรฅ Opinionsundersรถkningar tills villkoret blir sant Loggar felet nรคr timeout-tiden lรถper ut och fortsรคtter sedan Allt som dyker upp sent โ€” AJAX-svar, spinnare, dialogrutor

Ett praktiskt mรถnster kombinerar alla tre: bekrรคfta sidan du landade pรฅ, vรคnta pรฅ elementet som anlรคnder asynkront och verifiera sedan varje enskilt fรคlt. Att gรถra det i den ordningen innebรคr att en trasig navigering stoppar testet tidigt, medan en handfull kosmetiska avvikelser rapporteras i en enda kรถrning. Samma disciplin gรคller รคven fรถr Selenium tester skrivna i kod, dรคr motsvarigheterna รคr hรฅrda pรฅstรฅenden, mjuka pรฅstรฅenden och explicita vรคntningar.

Verifiera och vรคnta-kommandon i den aktuella Selenium IDE

Ocuco-landskapet Firefox-plugin IDE som producerade skรคrmdumparna ovan togs ur bruk och kommandouppsรคttningen byggdes om fรถr det aktuella webblรคsartillรคgget. Flera seleniska namn รถverlevde, vissa dรถptes om och nรฅgra togs bort. Tabellen nedan mappar kommandona som anvรคnds i den hรคr artikeln till deras nuvarande motsvarigheter, hรคmtade frรฅn den officiella Selenium IDE-kommandoreferens.

ร„ldre selenesiskt kommando Kommando i den aktuella IDE:n
verifyElementPresent verifiera att elementet finns
verifyElementNotPresent verifieringselementet finns inte
verifieraTextPresent verifiera text (avgrรคnsad till en elementsรถkare, inte hela sidan)
verifyTextNotPresent verifiera att det inte รคr text (omfattat till en elementsรถkare)
verifieraTitel verifiera titel
verifieraElementPositionVรคnster / verifieraElementPositionTopp Ingen motsvarighet โ€” positionspรฅstรฅenden togs bort
klickaOchVรคnta, skrivOchVรคnta, vรคljOchVรคnta Inget AndWait-suffix โ€” kommandot open vรคntar redan pรฅ att en sida ska laddas
waitForElementPresent vรคnta pรฅ att elementet ska finnas, med en vรคntetid i millisekunder
vรคnta pรฅ varning bekrรคfta varning eller verifiera varningstext efter att dialogrutan visas

Tvรฅ skillnader รคr viktigast i det dagliga arbetet. Fรถr det fรถrsta tar de nuvarande vรคntekommandona โ€“ vรคnta pรฅ att elementet finns, vรคnta pรฅ att elementet รคr synligt, vรคnta pรฅ att elementet รคr redigerbart och deras negativa tvillingar โ€“ var och en en explicit vรคntetid i millisekunder, sรฅ ett lรฅngsamt steg behรถver inte lรคngre dela en global timeout. Fรถr det andra รคr den sidomfattande textsรถkningen borta: verifiera text behรถver en lokaliseringsfunktion, vilket vanligtvis ger en skarpare kontroll รคndรฅ.

Vanliga fel med Verify- och waitFor-kommandon

De flesta rapporterade problemen med dessa kommandon รคr inte defekter i IDE:n. Listan nedan tรคcker de fel som uppstรฅr oftast och vad som รฅtgรคrdar vart och ett.

  • Elementet finns men kontrollen misslyckas fortfarande. Nรคrvaro och synlighet รคr olika tillstรฅnd. Ett element som รคr dolt bakom en CSS-regel finns fortfarande kvar i DOM:en, sรฅ para ihop nรคrvarokontrollen med vรคnta pรฅ att elementet ska vara synligt nรคr testet รคr beroende av att anvรคndaren faktiskt ser det.
  • En textkontroll misslyckas pรฅ formuleringar som ser identiska ut. Hรฅrda mellanslag, efterfรถljande blanksteg och lockiga apostrofer kopierade frรฅn ett designdokument bryter alla en exakt matchning. Skriv om den fรถrvรคntade strรคngen fรถr hand istรคllet fรถr att klistra in den.
  • Ett wait-kommando fรฅr timeout pรฅ en sida som tydligt laddades. Elementet finns vanligtvis inuti en iframe. Kรถr select frame fรถrst, annars utvรคrderas locatorn mot fel dokument.
  • clickAndWait hรคnger sig i en applikation med en enda sida. Ingen navigering sker, sรฅ det finns inget att vรคnta pรฅ. Ersรคtt det med ett klick plus lรคmpligt waitFor-kommando.
  • En positionskontroll godkรคnns lokalt och misslyckas pรฅ byggservern. Skรคrmstorlek och teckensnittsrendering skiljer sig รฅt. Fรถredra en nรคrvaro- eller textkontroll, eller ange en explicit fรถnsterstorlek i bรถrjan av testet.
  • Hela sviten stannar vid fรถrsta missmatchningen. Ett assert-kommando registrerades dรคr ett verify-kommando var avsett. Byt prefix sรฅ rapporterar kรถrningen varje fel istรคllet fรถr bara det fรถrsta.

Nรคr ett skript รถverlever dessa fรคllor รคr nรคsta steg vanligtvis att lagra runtime-vรคrden i variabler sรฅ jรคmfรถrs kontrollerna mot verklig data snarare รคn hรฅrdkodade strรคngar.

Vanliga frรฅgor

Den รคldre IDE:n delade en global timeout fรถr varje waitFor-steg, vilket รคndrades med kommandot setTimeout. Det aktuella tillรคgget tar en explicit vรคntetid i millisekunder fรถr varje wait-kommando, sรฅ en enda lรฅngsam skรคrm tvingar inte lรคngre alla andra steg att vรคnta lika lรคnge.

Nej. Pausen รคr alltid inaktiv under hela tiden, sรฅ den slรถsar bort tid nรคr sidan รคr snabb och misslyckas fortfarande nรคr sidan รคr lรฅngsam. Anvรคnd den bara fรถr att demonstrera ett steg under en demo, aldrig i en svit som du tรคnker kรถra upprepade gรฅnger.

Det gรถr det inte. Presence innebรคr att noden finns i DOM:n, vilket fรถrblir sant fรถr element som รคr dolda av CSS eller placerade utanfรถr skรคrmen. Nรคr testet รคr beroende av att anvรคndaren ser nรฅgot, lรคgg till wait for element visible bredvid nรคrvarokontrollen.

Ja, och den nuvarande IDE:n krรคver det. Dess verify text-kommando tar en elementlokaliserare plus den fรถrvรคntade strรคngen, vilket รคr striktare รคn den gamla sidรถvergripande sรถkningen och hindrar ett orelaterat menyalternativ frรฅn att uppfylla en kontroll som det aldrig var tรคnkt att uppfylla.

Code export omvandlar varje kommando till en ekvivalent sats i mรฅlsprรฅket, sรฅ ett wait-steg blir en explicit WebDriver-vรคntning. Lรคs den genererade filen innan du litar pรฅ den, eftersom timeouts och mjuk- kontra-hรฅrd-felbeteende inte alltid รถverlever รถversรคttningen intakt.

Maskininlรคrningsmodeller lรคser historisk kรถrdata och flaggar de steg som misslyckas intermittent snarare รคn konsekvent, vilket รคr tecken pรฅ en saknad vรคntetid. AI-assisterad lokaliseringsreparation tar itu med den andra vanliga orsaken genom att fรถreslรฅ en ny vรคljare nรคr markup รคndras.

Den hanterar den mekaniska delen bra โ€“ och omvandlar ett vรคntesteg till en WebDriverWait med ett fรถrvรคntat villkor. Revvisa vilken timeout den vรคljer och vilket villkor den vรคljer, eftersom ett genererat nรคrvarovillkor ofta behรถver vara ett synlighetsvillkor istรคllet.

Lokaliseringsverktyg utvรคrderas mot det valda dokumentet, och en iframe รคr en separat sรฅdan. Kรถr kommandot select frame fรถrst, sedan check, och รฅtergรฅ till det รถversta dokumentet efterรฅt sรฅ att fรถljande steg inte sรถks i fel kontext.

Sammanfatta detta inlรคgg med: