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.
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.
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.
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.
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.
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.
Vi kan anvรคnda en kombination av "klick" och "waitForTextPresent" fรถr att verifiera nรคrvaron av texten "Ange din fรถdelsedag".
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.






