Spremi varijable, odjek, upozorenje, rukovanje skočnim prozorima Selenium IDE

⚡ Pametni sažetak

Pohrani naredbe u Selenium IDE sprema vrijednosti za vrijeme izvođenja u imenovane varijable, echo ih ispisuje u zapisnik, a namjenska obitelj naredbi obrađuje upozorenja, dijaloške okvire za potvrdu i prebacivanje između više prozora preglednika.

  • 🔘 Kreirajte varijablu: Naredba store uzima vrijednost u Target i naziv varijable u Value.
  • ☑️ Pročitajte to natrag: Omotajte ime unutar ${ } gdje god naredba prihvaća cilj ili vrijednost.
  • Ispis za otklanjanje pogrešaka: echo zapisuje doslovni niz ili varijablu izravno u IDE log.
  • 🧪 Obavijesti se automatski prihvaćaju: IDE klikne U redu umjesto vas, pa upotrijebite storeAlert za snimanje teksta poruke.
  • 🛠️ Za potvrde je potrebna odluka: Postavite chooseOkOnNextConfirmation prije naredbe koja otvara dijalog.
  • 📊 Prebacivanje prozora: selectWindow cilja naslov prozora, a null cilj vraća na roditeljski prozor.

Pohrani varijable, rukovanje odjekom, upozorenjima i skočnim prozorima u Selenium IDE

U ovom tutorialu naučit ćete naredbe za pohranu, naredbu echo te rukovanje upozorenjima i skočnim prozorima u Selenium IDEZajedno, ove naredbe pretvaraju fiksni snimljeni skript u onaj koji reagira na sve što aplikacija vrati tijekom izvođenja.

⚠️ Napomena o verzijama: Snimke zaslona u nastavku potječu iz originala Firefox-dodatak Selenium IDE, a naredbe koriste njegova imena u selenskom stilu napisana camelCaseom. Trenutni Chrome, Firefox a Edge ekstenzija zadržava isto ponašanje, ali većinu naziva naredbi piše s razmacima. Mapaping Tablica se pojavljuje pri kraju ovog članka, a svaka originalna naredba i snimka zaslona sačuvane su onako kako su objavljene.

Selenium IDE varijable

dućan

Za pohranjivanje varijabli u Selenium IDE, koristimo dućan naredba. Donja ilustracija pohranjuje vrijednost „tutorial“ u varijablu pod nazivom „myVariable“.

Selenium IDE naredba za pohranu s vodičem za vrijednost spremljenom u myVariable

Za pristup varijabli, jednostavno je stavite u simbol ${ … }. Na primjer, za unos vrijednosti „myVariable“ u tekstualni okvir „userName“ u Mercury Obilasci, unesite ${myVariable} u polje Vrijednost.

Selenium IDE tip naredbe korištenjem ${myVariable} u polju Value tekstualnog okvira userName

Naredba Echo u Selenium IDE

Pohranjena varijabla je nevidljiva dok je nešto ne ispiše, a to je ono što odjek naredba to radi. Zapisuje poruku u okno zapisnika IDE-a tijekom reprodukcije, što je čini najbržim načinom za potvrdu da je naredba pohrane uhvatila ono što ste očekivali prije nego što na njoj izgradite tvrdnje.

Naredba prihvaća bilo koji oblik:

  • Doslovni niz. Stavite tekst u Target polje, na primjer Korak prijave završen, za označavanje kontrolne točke u dugom scenariju.
  • Varijabla. Stavite ${myVariable} u Target polje i pohranjena vrijednost se ispisuje umjesto imena.

Dvije navike čine echo puno korisnijim nego što se na prvi pogled čini. Ispišite varijablu odmah nakon naredbe store koja ju je stvorila, tako da je neuspjeh... tracvezano uz snimanje, a ne uz tvrdnju dvadeset koraka kasnije. I svakoj poruci dodajte prefiks koraka kojem pripada, jer okno zapisnika prikazuje svaku naredbu u jednom ravnom popisu. Imajte na umu da echo zapisuje samo u zapisnik - nikada ne mijenja stranicu i nikada ne pada na testu, pa ga je sigurno trajno ostaviti u skripti.

StoreElementPresent

Ova naredba pohranjuje ili „true“ ili „false“ ovisno o prisutnosti navedenog elementa. Skripta u nastavku pohranjuje logičku vrijednost „true“ u „var1“ i „false“ u „var2“. Za provjeru ćemo koristiti naredbu echo za prikaz vrijednosti var1 i var2. Osnova URL za donju ilustraciju postavljeno je na Mercury Početna stranica Tours.

Selenium IDE storeElementPresent sprema vrijednost true u var1 i false u var2, što se ponavlja u zapisniku

StoreText

Ova se naredba koristi za pohranjivanje unutarnjeg teksta elementa u varijablu. Ilustracija u nastavku pohranjuje unutarnji tekst oznake h1 na stranici za registraciju na Facebooku u varijablu pod nazivom „textVar“.

Selenium IDE storeText naredba čita css=h1 u varijablu textVar

Budući da je to jedini element te vrste na stranici, sigurno je koristiti "css=h1" kao naš cilj. Slika ispod to pokazuje Selenium IDE je uspio spremiti niz znakova "Sign Up" u varijablu "textVar" jer je echo ispravno ispisao njegovu vrijednost.

Selenium Ispis IDE okna zapisnika Prijavi se kao vrijednost pohranjena u textVar-u

Upozorenja, skočni prozori i više Windows

Obavijesti su vjerojatno najjednostavniji oblik skočnog prozora. Najčešći Selenium IDE naredbe koje se koriste za rukovanje upozorenjima su sljedeće:

Upozorenja Koristi

assertAlert

assertNotAlert

dohvaća poruku upozorenja i uspoređuje je s nizom vrijednosti koji ste naveli

assertAlertPresent

assertAlertNotPresent

potvrđuje je li upozorenje prisutno ili ne
storeAlert dohvaća poruku upozorenja i pohranjuje je u varijablu koju odredite
storeAlertPresent vraća TRUE ako je prisutno upozorenje, inače vraća FALSE

verifyAlert

verifyNotAlert

dohvaća poruku upozorenja i provjerava je li jednaka vrijednosti niza znakova koju ste naveli

verifyAlertPresent

verifyAlertNotPresent

provjerava je li upozorenje prisutno ili ne

Zapamtite ove dvije stvari kada radite s upozorenjima:

  • Selenium IDE automatski klikne gumb U redu u prozoru upozorenja, tako da nećete moći vidjeti stvarno upozorenje.
  • Selenium IDE ne može obraditi upozorenja koja se aktiviraju unutar funkcije onload() stranice. Obrađuje samo upozorenja koja se generiraju nakon što se stranica potpuno učita.

U ovom primjeru koristimo naredbu storeAlert kako bismo pokazali da iako Selenium IDE nije prikazao stvarno upozorenje, ali je ipak uspio dohvatiti poruku.

Korak 1) In Selenium IDE, postavite bazu URL na http://jsbin.com. Puni URL je http://jsbin.com/usidix. Ovi jsbin isječci datiraju iz Firefox-dodatak ere i možda više neće rješavati problem; svaka stranica s gumbom koji aktivira upozorenje reproducira isti rezultat.

Korak 2) Izradite skriptu kao što je prikazano u nastavku. Naredba click cilja gumb Go!, storeAlert bilježi poruku u alertMessage, a echo je ispisuje.

Selenium IDE skripta s naredbama click, storeAlert i echo na stranici s demonstracijom jsbin upozorenja

Korak 3) Izvršite skriptu i ne očekujte da ćete vidjeti stvarno upozorenje. Okno zapisnika ispod prikazuje snimljenu poruku iako dijalog nikada nije bio vidljiv.

Selenium IDE zapisnik koji prikazuje tekst upozorenja koji je storeAlert dohvatio nakon reprodukcije

potvrde

Potvrde su skočni prozori koji vam daju gumbe U redu i Otkaži, za razliku od upozorenja koja vam daju samo gumb U redu. Naredbe koje možete koristiti za rukovanje potvrdama odražavaju naredbe upozorenja.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • storeConfirmation
  • storeConfirmationPresent
  • provjeriPotvrdu / provjeriNePotvrdi
  • provjeriPotvrdaPrisutnost / provjeriPotvrdaNijePrisutnost

Osim toga, ove naredbe govore Selenium koji gumb odabrati, U redu ili Otkaži.

  • odaberiU reduNaSljedećePotvrda / odaberiU reduNaSljedećePotvrdaIČekaj
  • odaberite OdustaniNaSljedećojPotvrdi

Postavite ove naredbe prije naredba koja aktivira okvir za potvrdu, tako da Selenium IDE unaprijed zna koju opciju odabrati. Ponovno, nećete vidjeti stvarni okvir za potvrdu tijekom izvršavanja skripte.

Testirajmo web stranicu s gumbom koji je kodiran da izvještava je li korisnik pritisnuo U redu ili Otkaži.

Korak 1) In Selenium IDE, postavite bazu URL na http://jsbin.com. Puni URL je http://jsbin.com/enifaf.

Korak 2) Izradite skriptu kao što je prikazano dolje. Ovaj put ćemo prvo pritisnuti gumb U redu.

Selenium IDE skripta koja postavlja chooseOkOnNextConfirmation prije klika koji otvara dijalog

Korak 3) Izvršite skriptu i primijetite da ne vidite stvarnu potvrdu, no web stranica i dalje izvještava koji gumb Selenium Pritisnuto IDE.

Probna stranica koja izvještava da je pritisnut gumb U redu u dijalogu za potvrdu

Korak 4) Zamijenite naredbu chooseOkOnNextConfirmation s chooseCancelOnNextConfirmation i ponovno izvršite skriptu. Stranica sada prikazuje suprotan izbor.

Selenium IDE skripta uređena je za korištenje chooseCancelOnNextConfirmation umjesto chooseOkOnNextConfirmation

višekratnik Windows

Ako kliknete na poveznicu koja otvara zaseban prozor, prvo morate dati upute Selenium IDE za odabir tog prozora prije nego što možete pristupiti elementima unutar njega. U naslijeđenom IDE-u koristite naslov prozora kao njegov lokator.

Za prebacivanje između prozora koristimo naredbu selectWindow.

Koristit ćemo poveznicu http://jsbin.com/ocinaj/1, čiji je naslov „Prvi prozor“. Hiperveza „ovdje“ na toj stranici otvara Facebook u novom prozoru, nakon čega upućujemo Selenium IDE učiniti sljedeće:

  • Prenesite kontrolu s roditeljskog prozora na novopokrenuti Facebook prozor pomoću naredbe selectWindow s naslovom prozora kao lokatorom.
  • Provjerite naslov novog prozora.
  • Ponovno odaberite izvorni prozor pomoću naredbe selectWindow s "null" kao ciljem.
  • Provjerite naslov trenutno odabranog prozora.

Gornji plan se prevodi u ovdje prikazani niz od četiri koraka.

Dijagram prelaska iz roditeljskog prozora u novi prozor i natrag

Korak 1) Postavite bazu URL na http://jsbin.com.

Korak 2) Napravite skriptu kao što je prikazano u nastavku.

Selenium IDE skripta koja koristi selectWindow, pause i verifyTitle za kretanje između dva prozora

Potrebna nam je naredba pause kako bismo pričekali da se novopokrenuti prozor učita prije nego što možemo pročitati njegov naslov.

Korak 3) Izvršite skriptu. Primijetite da je testni slučaj prošlo, što znači da smo mogli prebacivati ​​između prozora i uspješno provjeriti njihove naslove.

Rezultat prolaska zelene Selenium IDE nakon što su provjerena oba naslova prozora

Uvijek imajte na umu da postavljanje cilja selectWindow na "null" automatski odabire roditeljski prozor - u ovom slučaju prozor u kojem se nalazi element "link=here".

Bilješka: Facebook je promijenio naslov svoje stranice od izrade ovog vodiča. Izmijenite očekivani naslov u skripti u skladu s tim.

moderna Selenium IDE ekvivalenti ovih naredbi

The Firefox-plugin IDE je ukinut kada Firefox premješteno na WebExtensions arhitekturu i trenutni Chrome, Firefox i Edge ekstenzija je preimenovala većinu Selenese naredbi u razmaknute oblike. Ponašanje je nepromijenjeno, tako da je donja tablica sve što vam je potrebno za čitanje gornjih skripti u odnosu na trenutnu instalaciju.

Naslijeđena naredba u ovom vodiču struja Selenium IDE naredba
dućan dućan
odjek odjek
trgovinaTekst pohrani tekst
storeElementPresent pohraniti element prisutan (ili potvrditi element prisutan)
assertAlert / verifyAlert potvrdi upozorenje / provjeri upozorenje
odaberiteU reduNaSljedećePotvrda odaberite u redu pri sljedećoj potvrdi
odaberite OdustaniNaSljedećojPotvrdi odaberite otkaži pri sljedećoj potvrdi
selectWindow (naslov kao cilj) odaberite prozor s handle=${handle}

Vrijedi istaknuti dvije razlike. Upute, koje stariji članak ne pokriva, sada imaju vlastite naredbe: odgovor na sljedeći upit planira odgovor prije nego što se pojavi dijalog i odgovor webdrivera na vidljivom upitu upisuje u već otvoreni upit. Prebacivanje između prozora više ne ovisi o naslovu stranice. Pokreni ručka za izlog trgovine prvo uhvatiti ručku, a zatim proslijediti ručka=${vašaRučka} za odabir prozora. Ta promjena uklanja način kvara opisan u gornjoj napomeni, gdje web-mjesto jednostavno preimenuje svoju stranicu i skripta prestane pronalaziti prozor. Službenik Selenium Stranica IDE projekta navodi cijeli trenutni skup naredbi.

Pitanja i odgovori

Da. ${myVariable} i ${myvariable} odnose se na dvije različite varijable, a referenciranje one koja nikada nije pohranjena rješava se praznim nizom umjesto da se izazove greška. Zadržite jednu konvenciju imenovanja u cijelom paketu kako biste izbjegli tihe praznine.

Da. Sintaksa ${ } je proširena u bilo kojem Target ili polje Vrijednost, tako da radi unutar otvorene naredbe, XPath-a ili CSS selektora. Tako se snimljeni skript pretvara u onaj koji se pokreće podacima snimljenim ranije tijekom izvođenja.

Selenese nema matematičkih operatora. Koristite naredbu execute script s malim JavaIzraz skripte koji čita varijablu i vraća rezultat, a zatim pohranjuje tu povratnu vrijednost. Imajte na umu da svaka pohranjena vrijednost dolazi kao niz znakova, stoga je prvo pretvorite.

Tretirajte ih kao lokalne za jedan test. Oslanjanje na vrijednost koju je postavio raniji test čini ovisnim o redoslijedu paketa i teškim za otklanjanje pogrešaka, stoga pohranite ono što testu treba unutar tog testa ili to pročitajte iz podatkovne datoteke na početku.

Upitu je potreban tekst, ne samo odabir gumba. Pokrenite odgovor na sljedećem upitu s odgovorom u polju Vrijednost prije naredbe koja ga otvara ili koristite odgovor webdrivera na vidljivom upitu kada je dijalog već na zaslonu.

Alati za strojno učenje mogu predložiti niz naredbi iz opisa scenarija jednostavnim jezikom i predložiti čvršće lokatore od onih koje snimač proizvodi. Popravak lokatora uz pomoć umjetne inteligencije također pomaže, budući da je preimenovani element uobičajeni razlog zašto se pohranjena vrijednost vraća prazna.

Da. Izvezi test u Java or Python, a zatim neka Copilot refaktorira ravni popis naredbi u objekte stranica i ponovno upotrebljive čekajuće stavke. Provjerite ručno rukovanje upozorenjima, jer generirani kod često pretpostavlja vidljivi dijalog koji je IDE već odbacio.

Odabir na temelju naslova postaje dvosmislen i može se odabrati pogrešan prozor. Upravo zato trenutni IDE preferira ručke: uhvati jednu s ručkom prozora za pohranu odmah nakon otvaranja prozora, a zatim prebaci s handle=${yourHandle}.

Sažmite ovu objavu uz: