Stocarea variabilelor, Echo, Alertă, Gestionare popUp în Selenium IDE

⚡ Rezumat inteligent

Stocați comenzile în Selenium IDE salvează valorile de execuție în variabile denumite, echo le afișează în jurnal, iar o familie de comenzi dedicată gestionează alertele, dialogurile de confirmare și comutarea între mai multe ferestre de browser.

  • 🔘 Creați o variabilă: Comanda store preia valoarea din Target și numele variabilei din Value.
  • ☑️ Citește-l din nou: Încadrați numele în ${ } oriunde o comandă acceptă o țintă sau o valoare.
  • Tipărire pentru depanare: echo scrie un șir literal sau o variabilă direct în jurnalul IDE.
  • 🧪 Alertele sunt acceptate automat: IDE-ul dă clic pe OK, așa că folosește storeAlert pentru a captura textul mesajului.
  • 🛠️ Confirmările necesită o decizie: Plasați chooseOkOnNextConfirmation înaintea comenzii care deschide caseta de dialog.
  • 📊 Comutare ferestre: selectWindow vizează un titlu de fereastră, iar o țintă nulă revine la fereastra părinte.

Stocarea variabilelor, gestionarea ecourilor, alertelor și ferestrelor pop-up în Selenium IDE

În acest tutorial veți învăța comenzile store, comanda echo și gestionarea alertelor și a ferestrelor pop-up în Selenium IDEÎmpreună, aceste comenzi transformă un script înregistrat fix într-unul care reacționează la orice returnează aplicația la momentul execuției.

⚠️ O notă despre versiuni: Capturile de ecran de mai jos provin din original Firefox-conecteaza Selenium IDE, iar comenzile folosesc numele sale camelCase Selenese. Chrome-ul actual, Firefox și extensia Edge păstrează același comportament, dar scrie majoritatea numelor de comenzi cu spații. O hartăping tabelul apare spre sfârșitul acestui articol, iar fiecare comandă și captură de ecran originală este păstrată așa cum a fost publicată.

Selenium Variabile IDE

Magazin

Pentru a stoca variabile în Selenium IDE, folosim stoca comandă. Ilustrația de mai jos stochează valoarea „tutorial” într-o variabilă numită „myVariable”.

Selenium Comanda IDE store cu tutorialul de valoare salvat în myVariable

Pentru a accesa variabila, pur și simplu includeți-o într-un simbol ${ … }. De exemplu, pentru a introduce valoarea „myVariable” în caseta de text „userName” din Mercury Tururi, introduceți ${myVariable} în câmpul Valoare.

Selenium Comandă de tip IDE folosind ${myVariable} în câmpul Value din caseta de text userName

Comandă Echo în Selenium IDE

O variabilă stocată este invizibilă până când ceva nu o afișează, și asta este ceea ce face... ecou Comanda o face. Scrie un mesaj în panoul jurnal IDE în timpul redării, ceea ce o face cea mai rapidă modalitate de a confirma că o comandă de stocare a surprins ceea ce vă așteptați înainte de a construi aserțiuni peste ea.

Comanda acceptă oricare dintre formele:

  • Un șir literal. Puneți textul în Target câmp, de exemplu Pasul de conectare finalizat, pentru a marca un punct de control într-un script lung.
  • O variabilă. Puneți ${myVariable} în Target câmp și valoarea stocată este tipărită în locul numelui.

Două obiceiuri fac ca ecoul să fie mult mai util decât pare la prima vedere. Afișează o variabilă imediat după comanda de stocare care îl creează, deci un eșec este tracutilizat pentru captură, mai degrabă decât pentru aserțiune, douăzeci de pași mai târziu. Și prefixați fiecare mesaj cu pasul căruia îi aparține, deoarece panoul de jurnal afișează fiecare comandă într-o listă plată. Rețineți că echo scrie doar în jurnal - nu modifică niciodată pagina și nu eșuează niciodată la un test, deci este sigur să lăsați permanent într-un script.

StoreElementPresent

Această comandă stochează fie „true”, fie „false”, în funcție de prezența elementului specificat. Scriptul de mai jos stochează valoarea booleană „true” în „var1” și „false” în „var2”. Pentru verificare, vom folosi comanda echo pentru a afișa valorile lui var1 și var2. Valoarea de bază URL pentru ilustrația de mai jos a fost setată la Mercury Pagina principală a excursiilor.

Selenium IDE storeElementPresent salvează valoarea true la var1 și valoarea false la var2, afișat în jurnal

StoreText

Această comandă este utilizată pentru a stoca textul intern al unui element într-o variabilă. Ilustrația de mai jos stochează textul intern al etichetei h1 de pe pagina de înscriere Facebook într-o variabilă numită „textVar”.

Selenium Comanda IDE storeText citește css=h1 în variabila textVar

Întrucât este singurul element de acest fel de pe pagină, este sigur să folosim „css=h1” ca țintă. Imaginea de mai jos arată asta. Selenium IDE a reușit să salveze șirul „Sign Up” în variabila „textVar”, deoarece echo a afișat corect valoarea acestuia.

Selenium Imprimarea panoului jurnal IDE Înregistrare ca valoare stocată în textVar

Alerte, pop-up și multiple Windows

Alertele sunt probabil cea mai simplă formă de fereastră pop-up. Cea mai comună Selenium Comenzile IDE utilizate în gestionarea alertelor sunt următoarele:

Alerte Utilizeaza

assertAlert

assertNotAlert

preia mesajul alertei și îl activează în funcție de o valoare de tip șir specificată de dvs.

assertAlertPresent

assertAlertNotPresent

afirmă dacă există sau nu o alertă
storeAlert preia mesajul de alertă și îl stochează într-o variabilă specificată de dvs.
storeAlertPresent returnează TRUE dacă este prezentă o alertă, FALSE în caz contrar

verifyAlert

verifyNotAlert

preia mesajul alertei și verifică dacă acesta este egal cu valoarea șirului de caractere specificată de dvs.

verifyAlertPresent

verifyAlertNotPresent

verifică dacă există sau nu o alertă

Rețineți aceste două lucruri când lucrați cu alerte:

  • Selenium IDE dă automat clic pe butonul OK din fereastra de alertă, deci nu veți putea vedea alerta propriu-zisă.
  • Selenium IDE nu poate gestiona alertele declanșate în cadrul funcției onload() a paginii. Acesta gestionează doar alertele generate după ce pagina s-a încărcat complet.

În acest exemplu folosim comanda storeAlert pentru a arăta că, deși Selenium IDE nu a afișat alerta propriu-zisă, dar a reușit totuși să recupereze mesajul.

Pas 1) In Selenium IDE, setează Baza URL către http://jsbin.com. Întregul URL este http://jsbin.com/usidix. Aceste fragmente jsbin datează din Firefoxera plugin-urilor și este posibil să nu mai fie rezolvată; orice pagină cu un buton care generează o alertă reproduce același rezultat.

Pas 2) Creați scriptul așa cum se arată mai jos. Comanda click vizează butonul Go!, storeAlert capturează mesajul în alertMessage, iar echo îl afișează.

Selenium Script IDE cu comenzi click, storeAlert și echo pe pagina demo de alerte jsbin

Pas 3) Executați scriptul și nu vă așteptați să vedeți alerta propriu-zisă. Panoul jurnal de mai jos afișează mesajul capturat chiar dacă dialogul nu a fost niciodată vizibil.

Selenium Jurnal IDE care afișează textul de alertă recuperat de storeAlert după redare

Confirmări

Confirmările sunt ferestre pop-up care vă oferă un buton OK și un buton CANCEL, spre deosebire de alerte, care vă oferă doar butonul OK. Comenzile pe care le puteți utiliza pentru gestionarea confirmărilor reflectă comenzile de alertă.

  • asserConfirmation / asserNuConfirmation
  • asserConfirmationPresent / asserConfirmationNoPresent
  • Confirmare magazin
  • storeConfirmationPresent
  • verificareConfirmare / verificareNuConfirmare
  • verificareConfirmarePrezent / verificareConfirmareNuPrezent

În plus, aceste comenzi spun Selenium ce buton să alegeți, OK sau ANULARE.

  • alegeOkLaUrmătoareaConfirmare / alegeOkLaUrmătoareaConfirmareȘiAșteptați
  • alege CancelOnNextConfirmation

Plasați aceste comenzi înainte comanda care declanșează caseta de confirmare, astfel încât Selenium IDE știe dinainte ce opțiune să aleagă. Din nou, nu veți vedea caseta de confirmare propriu-zisă în timpul execuției scriptului.

Să testăm o pagină web cu un buton codat să raporteze dacă utilizatorul a apăsat OK sau CANCEL.

Pas 1) In Selenium IDE, setează Baza URL către http://jsbin.com. Întregul URL este http://jsbin.com/enifaf.

Pas 2) Creați scriptul așa cum se arată mai jos. De data aceasta vom apăsa mai întâi butonul OK.

Selenium Script IDE plasând comanda chooseOkOnNextConfirmation înainte de clicul care deschide caseta de dialog

Pas 3) Executați scriptul și observați că nu vedeți confirmarea propriu-zisă, dar pagina web încă raportează ce buton Selenium IDE apăsat.

Pagină de test care raportează că a fost apăsat butonul OK din caseta de dialog de confirmare

Pas 4) Înlocuiți comanda chooseOkOnNextConfirmation cu chooseCancelOnNextConfirmation și executați din nou scriptul. Pagina afișează acum opțiunea opusă.

Selenium Scriptul IDE a fost editat pentru a utiliza chooseCancelOnNextConfirmation în loc de chooseOkOnNextConfirmation

Multiplu Windows

Dacă faceți clic pe un link care deschide o fereastră separată, trebuie mai întâi să instruiți Selenium IDE să selecteze acea fereastră înainte de a putea accesa elementele din interiorul ei. În IDE-ul vechi, folosești titlul ferestrei ca localizator.

Folosim comanda selectWindow pentru a comuta între ferestre.

Vom folosi linkul http://jsbin.com/ocinaj/1, al cărui titlu este „Prima fereastră”. Hyperlinkul „aici” de pe pagina respectivă deschide Facebook într-o fereastră nouă, după care vă instruim Selenium IDE pentru a face următoarele:

  • Transferă controlul de la fereastra părinte la fereastra Facebook nou lansată folosind comanda selectWindow cu titlul ferestrei ca localizator.
  • Verificați titlul noii ferestre.
  • Selectați din nou fereastra originală folosind comanda selectWindow cu „null” ca țintă.
  • Verificați titlul ferestrei selectate în prezent.

Planul de mai sus se traduce în secvența în patru pași prezentată aici.

Diagrama trecerii de la fereastra părinte la noua fereastră și înapoi

Pas 1) Setați baza URL către http://jsbin.com.

Pas 2) Creați scriptul așa cum se arată mai jos.

Selenium Script IDE folosind selectWindow, pause și verifyTitle pentru a vă deplasa între două ferestre

Avem nevoie de comanda pause pentru a aștepta încărcarea ferestrei nou lansate înainte de a putea citi titlul acesteia.

Pas 3) Executați scriptul. Observați că caz de testare a trecut, ceea ce înseamnă că am putut comuta între ferestre și verifica cu succes titlurile acestora.

Rezultat depășire cu verde Selenium IDE după ce ambele titluri de ferestre au fost verificate

Rețineți întotdeauna că setarea țintei selectWindow la „null” selectează automat fereastra părinte - în acest caz, fereastra în care se găsește elementul „link=here”.

Notă: Facebook și-a schimbat titlul paginii de când a fost creat acest tutorial. Modificați titlul așteptat din script în consecință.

Modern Selenium Echivalente IDE ale acestor comenzi

FirefoxIDE-ul plugin-urilor a fost retras când Firefox mutat la arhitectura WebExtensions și la Chrome-ul actual, Firefox Și extensia Edge a redenumit majoritatea comenzilor Selenese într-o formă spațiată. Comportamentul este neschimbat, așa că tabelul de mai jos este tot ce aveți nevoie pentru a citi scripturile de mai sus pe o instalare curentă.

Comandă moștenită în acest tutorial Curent Selenium Comandă IDE
stoca stoca
ecou ecou
storeText stocați textul
storeElementPresent stocează elementul prezent (sau afirmă elementul prezent)
assertAlert / verifyAlert afirmare alertă / verificare alertă
alegeOkPeUrmătorulConfirmare alegeți ok la următoarea confirmare
alege CancelOnNextConfirmation alegeți anulare la următoarea confirmare
selectWindow (titlul ca țintă) selectați fereastra cu handle=${handle}

Două diferențe merită menționate. Solicitările, pe care articolul vechi nu le acoperă, au acum propriile comenzi: răspuns la următoarea solicitare planifică răspunsul înainte de apariția dialogului și răspunsul webdriver la o solicitare vizibilă tastează într-un prompt care este deja deschis. Iar schimbarea ferestrelor nu se mai bazează pe titlul paginii. Execută mânerul vitrinei magazinului să captezi mai întâi un mâner, apoi să pasezi handle=${identificatorul_tau} pentru a selecta fereastra. Această modificare elimină modul de eroare descris în nota de mai sus, în care un site își redenumește pur și simplu pagina, iar scriptul nu mai găsește fereastra. Oficialul Selenium Site-ul proiectului IDE listează setul complet de comenzi curente.

Întrebări frecvente

Da. ${myVariable} și ${myvariable} se referă la două variabile diferite, iar referirea la una care nu a fost niciodată stocată duce la un șir gol, în loc să genereze o eroare. Păstrați o singură convenție de denumire într-o suită pentru a evita spațiile libere silențioase.

Da. Sintaxa ${ } este extinsă în orice Target sau câmp Value, deci funcționează în interiorul unei comenzi deschise, a unui XPath sau a unui selector CSS. Acesta este modul în care un script înregistrat este transformat într-unul condus de datele capturate anterior în timpul rulării.

Selenese nu are operatori matematici. Folosește comanda execute script cu un mic JavaExpresie script care citește variabila și returnează rezultatul, apoi stochează acea valoare returnată. Rețineți că fiecare valoare stocată ajunge ca șir de caractere, așa că trebuie mai întâi convertită.

Tratați-le ca fiind locale pentru un singur test. Bazarea pe o valoare setată de un test anterior face ca suita de date să fie dependentă de ordine și dificil de depanat, așadar stocați ceea ce are nevoie un test în interiorul testului respectiv sau citiți-l dintr-un fișier de date la început.

Un prompt necesită text, nu doar o opțiune pentru un buton. Executați răspunsul la următorul prompt cu răspunsul în câmpul Valoare înainte de comanda care îl deschide sau folosiți răspunsul webdriver la un prompt vizibil atunci când dialogul este deja pe ecran.

Instrumentele de învățare automată pot propune o secvență de comenzi dintr-o descriere în limbaj simplu a unui scenariu și pot sugera localizatori mai robusti decât cei produși de un înregistrator. Repararea localizatorilor asistată de inteligență artificială ajută, de asemenea, deoarece un element redenumit este motivul obișnuit pentru care o valoare stocată revine goală.

Da. Exportați testul către Java or Python, apoi permiteți Copilot să refactorizeze lista de comenzi plate în obiecte de pagină și așteptări reutilizabile. Verificați manual gestionarea alertelor, deoarece codul generat presupune adesea un dialog vizibil pe care IDE-ul l-a închis deja.

Selecția bazată pe titlu devine ambiguă și poate fi aleasă fereastra greșită. Tocmai de aceea, IDE-ul actual preferă identificatorii: capturați unul cu identificatorul ferestrei de stocare imediat după deschiderea ferestrei, apoi comutați cu handle=${yourHandle}.

Rezumați această postare cu: