Lagre variabler, ekko, varsel, popup-håndtering i Selenium IDE

⚡ Smart oppsummering

Lagre kommandoer i Selenium IDE lagrer kjøretidsverdier i navngitte variabler, echo skriver dem ut til loggen, og en dedikert kommandofamilie håndterer varsler, bekreftelsesdialoger og bytting mellom flere nettleservinduer.

  • 🔘 Opprett en variabel: Lagre-kommandoen tar verdien i Target og variabelnavnet i Value.
  • ☑️ Les det tilbake: Pakk navnet inn i ${ } der en kommando aksepterer et mål eller en verdi.
  • Skriv ut for feilsøking: echo skriver en litteral streng eller en variabel rett inn i IDE-loggen.
  • 🧪 Varsler blir automatisk akseptert: IDE-en klikker OK for deg, så bruk storeAlert til å fange opp meldingsteksten.
  • 🛠️ Bekreftelser krever en avgjørelse: Plasser chooseOkOnNextConfirmation foran kommandoen som åpner dialogboksen.
  • 📊 Vindusbytte: selectWindow retter seg mot en vindustittel, og et null-mål returnerer til det overordnede vinduet.

Lagre variabler, ekko, varsling og popup-håndtering i Selenium IDE

I denne veiledningen lærer du store-kommandoene, echo-kommandoen og håndtering av varsler og popup-vinduer. Selenium IDESammen gjør disse kommandoene et fast innspilt skript om til et som reagerer på det applikasjonen returnerer under kjøring.

⚠️ En merknad om versjoner: Skjermbildene nedenfor kommer fra originalen Firefox-plugin Selenium IDE, og kommandoene bruker dens camelCase Selenese-navn. Den nåværende Chrome, Firefox og Edge-utvidelsen beholder samme oppførsel, men skriver de fleste kommandonavn med mellomrom. En kartping Tabellen vises mot slutten av denne artikkelen, og alle originale kommandoer og skjermbilder er bevart som publiserte.

Selenium IDE-variabler

Butikk

For å lagre variabler i Selenium IDE, vi bruker oppbevare kommando. Illustrasjonen nedenfor lagrer verdien «tutorial» i en variabel med navnet «myVariable».

Selenium IDE-lagringskommando med verdiopplæringen lagret i myVariable

For å få tilgang til variabelen, sett den ganske enkelt innenfor et ${ … }-symbol. For eksempel, for å skrive inn verdien til «minVariabel» i tekstboksen «brukernavn» i Mercury Tours, skriv inn ${myVariable} i Verdi-feltet.

Selenium IDE-typekommando ved bruk av ${myVariable} i Verdi-feltet i brukernavn-tekstboksen

Ekko-kommando i Selenium IDE

En lagret variabel er usynlig inntil noe skriver den ut, og det er det savner kommandoen gjør. Den skriver en melding i IDE-loggruten under avspilling, noe som gjør den til den raskeste måten å bekrefte at en lagringskommando fanget opp det du forventet før du bygger påstander oppå den.

Kommandoen aksepterer begge former:

  • En bokstavelig streng. Sett teksten i Target felt, for eksempel Innloggingstrinn fullført, for å markere et kontrollpunkt i et langt skript.
  • En variabel. Sett inn ${myVariable} i Target feltet, og den lagrede verdien skrives ut i stedet for navnet.

To vaner gjør echo mye mer nyttig enn det først ser ut til. Skriv ut en variabel umiddelbart etter store-kommandoen som oppretter den, slik at en feil oppstår. traced til fangsten i stedet for påstanden tjue trinn senere. Og legg prefikset til trinnet den tilhører foran hver melding, fordi loggruten viser hver kommando i én flat liste. Merk at echo bare skriver til loggen – den endrer aldri siden og feiler aldri i en test, så det er trygt å la det stå permanent i et skript.

StoreElementPresent

Denne kommandoen lagrer enten «true» eller «false» avhengig av om det angitte elementet er til stede. Skriptet nedenfor lagrer den boolske verdien «true» til «var1» og «false» til «var2». For å bekrefte bruker vi echo-kommandoen for å vise verdiene til var1 og var2. Basen URL for illustrasjonen nedenfor ble satt til Mercury Turens hjemmeside.

Selenium IDE storeElementPresent lagrer sann til var1 og usann til var2, gjengitt i loggen

StoreTekst

Denne kommandoen brukes til å lagre den indre teksten til et element i en variabel. Illustrasjonen nedenfor lagrer den indre teksten til h1-taggen på Facebook-registreringssiden i en variabel kalt «textVar».

Selenium IDE storeText-kommandoen leser css=h1 inn i textVar-variabelen

Siden det er det eneste elementet av sitt slag på siden, er det trygt å bruke «css=h1» som mål. Bildet nedenfor viser det. Selenium IDE kunne lagre strengen «Registrer deg» i variabelen «textVar» fordi echo skrev ut verdien riktig.

Selenium IDE-loggruteutskrift Registrer deg som verdien lagret i textVar

Varsler, Popup og Multiple Windows

Varsler er sannsynligvis den enkleste formen for popup-vindu. Den vanligste Selenium IDE-kommandoer som brukes til å håndtere varsler er følgende:

Varsler Bruker

assertAlert

assertNotAlert

henter varselmeldingen og bekrefter den mot en strengverdi du spesifiserte

assertAlertPresent

assertAlertNotPresent

bekrefter om et varsel foreligger eller ikke
storeAlert henter varselmeldingen og lagrer den i en variabel du angir
storeAlertPresent returnerer SANN hvis et varsel er tilstede, USANN ellers

verifyAlert

verifyNotAlert

henter varselmeldingen og bekrefter om den er lik strengverdien du anga

verifyAlertPresent

verifyAlertNotPresent

bekrefter om et varsel er til stede eller ikke

Husk disse to tingene når du arbeider med varsler:

  • Selenium IDE klikker automatisk på OK-knappen i varselvinduet, slik at du ikke kan se det faktiske varselet.
  • Selenium IDE kan ikke håndtere varsler som utløses i sidens onload()-funksjon. Den håndterer bare varsler som genereres etter at siden er fullstendig lastet inn.

I dette eksemplet bruker vi storeAlert-kommandoen for å vise at selv om Selenium IDE viste ikke selve varselet, men klarte likevel å hente meldingen.

Trinn 1) In Selenium IDE, angi basen URL til http://jsbin.com. Den fullstendige URL er http://jsbin.com/usidix. Disse jsbin-utdragene stammer fra Firefox-plugin-æraen og kan ikke lenger løses; enhver side med en knapp som utløser et varsel gjengir det samme resultatet.

Trinn 2) Lag skriptet som vist nedenfor. click-kommandoen retter seg mot Go!-knappen, storeAlert lagrer meldingen i alertMessage, og echo skriver den ut.

Selenium IDE-skript med click-, storeAlert- og echo-kommandoer mot jsbin-varslingsdemosiden

Trinn 3) Kjør skriptet, og forvent ikke å se det faktiske varselet. Loggruten nedenfor viser den innsamlede meldingen selv om dialogboksen aldri var synlig.

Selenium IDE-logg som viser varselteksten hentet av storeAlert etter avspilling

Bekreftelser

Bekreftelser er popup-vinduer som gir deg en OK- og en AVBRYT-knapp, i motsetning til varsler, som bare gir deg OK-knappen. Kommandoene du kan bruke til å håndtere bekreftelser speiler varslingskommandoene.

  • hevdeBekreftelse / hevdeIkkeBekreftelse
  • hevdeBekreftelseNærværende / hevdeBekreftelseIkkeNærværende
  • butikkbekreftelse
  • storeConfirmationPresent
  • verifisereBekreftelse / verifisereIkkeBekreftelse
  • verifisereBekreftelseTilstede / verifisereBekreftelseIkkeTilstede

I tillegg forteller disse kommandoene Selenium hvilken knapp du skal velge, OK eller AVBRYT.

  • velgOkPåNesteBekreftelse / velgOkPåNesteBekreftelseOgVent
  • velgCancelOnNextConfirmation

Plasser disse kommandoene før du kommandoen som utløser bekreftelsesboksen, slik at Selenium IDE vet på forhånd hvilket alternativ det skal velge. Igjen, du vil ikke se den faktiske bekreftelsesboksen under skriptkjøring.

La oss teste en nettside med en knapp som var kodet for å rapportere om brukeren trykket på OK eller AVBRYT.

Trinn 1) In Selenium IDE, angi basen URL til http://jsbin.com. Den fullstendige URL er http://jsbin.com/enifaf.

Trinn 2) Lag skriptet som vist nedenfor. Denne gangen trykker vi først på OK-knappen.

Selenium IDE-skript plasserer chooseOkOnNextConfirmation før klikket som åpner dialogboksen

Trinn 3) Kjør skriptet og legg merke til at du ikke ser den faktiske bekreftelsen, men nettsiden rapporterer fortsatt hvilken knapp Selenium IDE trykket.

Testside rapporterer at OK-knappen i bekreftelsesdialogboksen ble trykket

Trinn 4) Erstatt kommandoen chooseOkOnNextConfirmation med chooseCancelOnNextConfirmation og kjør skriptet på nytt. Siden rapporterer nå det motsatte valget.

Selenium IDE-skript redigert for å bruke chooseCancelOnNextConfirmation i stedet for chooseOkOnNextConfirmation

multiple Windows

Hvis du klikker på en lenke som åpner et eget vindu, må du først instruere Selenium IDE for å velge det vinduet før du får tilgang til elementene i det. I den eldre IDE-en bruker du vinduets tittel som lokator.

Vi bruker selectWindow-kommandoen for å veksle mellom vinduer.

Vi bruker lenken http://jsbin.com/ocinaj/1, som har tittelen «Første vindu». Hyperkoblingen «her» på den siden åpner Facebook i et nytt vindu, hvoretter vi instruerer Selenium IDE for å gjøre følgende:

  • Overfør kontroll fra det overordnede vinduet til det nylig lanserte Facebook-vinduet ved å bruke selectWindow-kommandoen med vindustittelen som lokator.
  • Bekreft tittelen på det nye vinduet.
  • Velg det opprinnelige vinduet på nytt ved å bruke selectWindow-kommandoen med «null» som mål.
  • Bekreft tittelen på det gjeldende valgte vinduet.

Planen ovenfor oversettes til firetrinnssekvensen som vises her.

Diagram over vekslingen fra foreldrevinduet til det nye vinduet og tilbake igjen

Trinn 1) Sett basen URL til http://jsbin.com.

Trinn 2) Lag skriptet som vist nedenfor.

Selenium IDE-skript som bruker selectWindow, pause og verifyTitle for å flytte mellom to vinduer

Vi trenger pause-kommandoen for å vente på at det nylig lanserte vinduet lastes inn før vi kan lese tittelen.

Trinn 3) Utfør skriptet. Legg merke til at testforsøk bestått, som betyr at vi kunne bytte mellom vinduer og bekrefte titlene deres.

Grønn pasning resulterer i Selenium IDE etter at begge vindustittelene ble bekreftet

Husk alltid at hvis du setter selectWindow-målet til «null», velges det overordnede vinduet automatisk – i dette tilfellet vinduet der elementet «link=here» finnes.

OBS: Facebook har endret sidetittelen siden denne veiledningen ble laget. Endre den forventede tittelen i skriptet deretter.

Moderne Selenium IDE-ekvivalenter av disse kommandoene

Ocuco Firefox-plugin IDE ble pensjonert da Firefox flyttet til WebExtensions-arkitekturen og den nåværende Chrome, Firefox og Edge-utvidelsen ga nytt navn til de fleste Selenese-kommandoene til en linjeavstandsform. Oppførselen er uendret, så tabellen nedenfor er alt du trenger for å lese skriptene ovenfor mot en gjeldende installasjon.

Eldre kommando i denne veiledningen Gjeldende Selenium IDE-kommando
oppbevare oppbevare
savner savner
butikktekst butikktekst
storeElementPresent lagre element tilstede (eller hevde element tilstede)
assertAlert / verifisereAlert hevde varsel / bekrefte varsel
velgOKVedNesteBekreftelse velg ok ved neste bekreftelse
velgCancelOnNextConfirmation velg avbryt ved neste bekreftelse
velgVindu (tittel som mål) velg vindu med handle=${handle}

To forskjeller er verdt å nevne. Ledetekster, som den eldre artikkelen ikke dekker, har nå sine egne kommandoer: svar på neste spørsmål planlegger svaret før dialogboksen vises, og webdriver-svar på synlig ledetekst skriver inn i en ledetekst som allerede er åpen. Og vindusbytte er ikke lenger avhengig av sidetittelen. håndtak for butikkvindu å fange et håndtak først, deretter sende håndtak=${dittHåndtak} for å velge vindu. Den endringen fjerner feilmodusen som er beskrevet i merknaden ovenfor, der et nettsted ganske enkelt gir siden nytt navn og skriptet slutter å finne vinduet. Den offisielle Selenium IDE-prosjektnettsted viser hele gjeldende kommandosettet.

Spørsmål og svar

Ja. ${myVariable} og ${myvariable} refererer til to forskjellige variabler, og å referere til en som aldri ble lagret, løser opp til en tom streng i stedet for å generere en feil. Behold en enkelt navnekonvensjon på tvers av en suite for å unngå stille blanke felt.

Ja. ${ }-syntaksen utvides i alle Target eller Verdi-feltet, slik at det fungerer i en åpen kommando, en XPath- eller CSS-selektor. Det er slik et innspilt skript blir omgjort til et drevet av data som ble samlet inn tidligere i kjøringen.

Selenese har ingen matematiske operatorer. Bruk kommandoen execute script med en liten JavaSkriptuttrykk som leser variabelen og returnerer resultatet, og deretter lagrer returverdien. Husk at alle lagrede verdier kommer som en streng, så konverter den først.

Behandle dem som lokale for én enkelt test. Å stole på en verdi satt av en tidligere test gjør suiten rekkefølgeavhengig og vanskelig å feilsøke, så lagre det en test trenger inne i den testen, eller les det fra en datafil i starten.

En ledetekst trenger tekst, ikke bare et knappevalg. Kjør svar på neste ledetekst med svaret i Verdi-feltet før kommandoen som åpner den, eller bruk webdriver-svar på synlig ledetekst når dialogboksen allerede er på skjermen.

Maskinlæringsverktøy kan foreslå en kommandosekvens fra en enkel beskrivelse av et scenario og foreslå mer robuste lokaliseringsverktøy enn det en opptaker produserer. AI-assistert lokaliseringsreparasjon hjelper også, siden et omdøpt element er den vanlige grunnen til at en lagret verdi kommer tilbake tom.

Ja. Eksporter testen til Java or Python, og la deretter Copilot omstrukturere den flate kommandolisten til sideobjekter og gjenbrukbare ventetider. Sjekk varslingshåndteringen manuelt, fordi generert kode ofte antar en synlig dialogboks som IDE-en allerede har avvist.

Tittelbasert valg blir tvetydig, og feil vindu kan velges. Det er nettopp derfor den nåværende IDE-en foretrekker håndtak: registrer en med handle for butikkvinduet rett etter at vinduet åpnes, og bytt deretter med handle=${yourHandle}.

Oppsummer dette innlegget med: