Memorizza variabili, eco, avvisi, gestione popup in Selenium IDE

⚡ Riepilogo intelligente

Memorizza i comandi in Selenium L'IDE salva i valori di runtime in variabili denominate, li stampa nel log tramite il comando echo e una famiglia di comandi dedicata gestisce avvisi, finestre di dialogo di conferma e il passaggio tra più finestre del browser.

  • 🔘 Crea una variabile: Il comando store prende il valore in Target e il nome della variabile in Valore.
  • ☑️ Rileggilo: Racchiudi il nome tra ${ } ovunque un comando accetti una destinazione o un valore.
  • Stampa per il debug: Il comando echo scrive una stringa letterale o una variabile direttamente nel log dell'IDE.
  • 🧪 Le notifiche vengono accettate automaticamente: L'IDE fa clic su OK, quindi usa storeAlert per acquisire il testo del messaggio.
  • Le conferme richiedono una decisione: Posiziona chooseOkOnNextConfirmation prima del comando che apre la finestra di dialogo.
  • 📊 Cambio finestra: selectWindow seleziona il titolo di una finestra, mentre un target nullo restituisce la finestra padre.

Gestione delle variabili, dell'eco, dell'avviso e del popup in Selenium IDE

In questo tutorial imparerai i comandi dello store, il comando echo e la gestione di avvisi e popup in Selenium IDEInsieme, questi comandi trasformano uno script registrato fisso in uno script che reagisce a qualsiasi valore restituito dall'applicazione in fase di esecuzione.

⚠️ Nota sulle versioni: gli screenshot qui sotto provengono dall'originale Firefox-collegare Selenium IDE e i comandi utilizzano i suoi nomi camelCase Selenese. L'attuale Chrome, Firefox e l'estensione Edge mantiene lo stesso comportamento ma scrive la maggior parte dei nomi dei comandi con spazi. Una mappaping La tabella compare verso la fine di questo articolo e ogni comando e screenshot originale sono stati conservati così come pubblicati.

Selenium Variabili dell'IDE

Negozio

Per memorizzare le variabili in Selenium IDE, utilizziamo l' Tornare al suo account comando. L'illustrazione seguente memorizza il valore "tutorial" in una variabile denominata "myVariable".

Selenium Comando IDE store con il valore tutorial salvato in myVariable

Per accedere alla variabile, è sufficiente racchiuderla tra i simboli ${ … }. Ad esempio, per inserire il valore di "myVariable" nella casella di testo "userName" di Mercury Tours, inserisci ${myVariable} nel campo Valore.

Selenium Comando di tipo IDE utilizzando ${myVariable} nel campo Valore della casella di testo userName

Comando Echo in Selenium IDE

Una variabile memorizzata è invisibile finché qualcosa non la stampa, ed è questo che eco Il comando lo fa. Scrive un messaggio nel riquadro di log dell'IDE durante la riproduzione, il che lo rende il modo più rapido per confermare che un comando di memorizzazione abbia catturato ciò che ti aspettavi prima di costruire asserzioni su di esso.

Il comando accetta entrambe le forme:

  • Una stringa letterale. Inserisci il testo nel Target campo, ad esempio Passaggio di accesso completato, per contrassegnare un punto di controllo in uno script lungo.
  • Una variabile. Inserisci ${myVariable} nel Target campo e il valore memorizzato viene stampato al posto del nome.

Due abitudini rendono echo molto più utile di quanto sembri a prima vista. Stampa una variabile immediatamente dopo il comando store che la crea, in modo che un errore sia trace alla cattura piuttosto che all'asserzione venti passaggi dopo. E anteponi a ogni messaggio il passaggio a cui appartiene, perché il riquadro del log mostra ogni comando in un unico elenco piatto. Nota che echo scrive solo nel log: non cambia mai la pagina e non fallisce mai un test, quindi è sicuro lasciarlo in uno script in modo permanente.

StoreElementPresent

Questo comando memorizza "true" o "false" a seconda della presenza dell'elemento specificato. Lo script seguente memorizza il valore booleano "true" in "var1" e "false" in "var2". Per verificare, useremo il comando echo per visualizzare i valori di var1 e var2. La base URL per l'illustrazione sottostante è stato impostato su Mercury Home page dei tour.

Selenium IDE storeElementPresent salva true in var1 e false in var2, visualizzato nel log

StoreText

Questo comando viene utilizzato per memorizzare il testo interno di un elemento in una variabile. L'illustrazione seguente memorizza il testo interno del tag h1 nella pagina di registrazione di Facebook in una variabile denominata "textVar".

Selenium Il comando IDE storeText legge css=h1 nella variabile textVar

Poiché è l'unico elemento di questo tipo sulla pagina, è sicuro utilizzare "css=h1" come target. L'immagine seguente mostra che Selenium L'IDE è stato in grado di salvare la stringa "Sign Up" nella variabile "textVar", perché echo ne ha stampato correttamente il valore.

Selenium Il riquadro di log dell'IDE stampa "Sign Up" come valore memorizzato in textVar

Avvisi, popup e multipli Windows

Gli avvisi sono probabilmente la forma più semplice di finestra pop-up. Il più comune Selenium I comandi IDE utilizzati per gestire gli avvisi sono i seguenti:

Avvisi si utilizza

assertAlert

assertNotAlert

recupera il messaggio dell'avviso e lo confronta con un valore stringa specificato

assertAlertPresent

assertAlertNotPresent

verifica se è presente un avviso o meno
storeAlert recupera il messaggio di avviso e lo memorizza in una variabile da te specificata
storeAlertPresent Restituisce TRUE se è presente un avviso, FALSE altrimenti.

verificareAlert

verificareNotAlert

recupera il messaggio di avviso e verifica se corrisponde al valore stringa specificato

verificareAlertPresent

verificareAlertNotPresent

verifica se è presente un avviso o meno

Ricorda queste due cose quando lavori con gli avvisi:

  • Selenium L'IDE fa clic automaticamente sul pulsante OK della finestra di avviso, quindi non potrai visualizzare l'avviso effettivo.
  • Selenium L'IDE non è in grado di gestire gli avvisi che si attivano all'interno della funzione onload() della pagina. Gestisce solo gli avvisi generati dopo il caricamento completo della pagina.

In questo esempio utilizziamo il comando storeAlert per mostrare che anche se Selenium L'IDE non ha visualizzato l'avviso vero e proprio, ma è stato comunque in grado di recuperare il messaggio.

Passo 1) In Selenium IDE, imposta la base URL a http://jsbin.com. Il completo URL è http://jsbin.com/usidix. Questi snippet di jsbin risalgono al Firefox-il plugin è in uso e potrebbe non essere più in grado di risolvere il problema; qualsiasi pagina con un pulsante che genera un avviso riproduce lo stesso risultato.

Passo 2) Crea lo script come mostrato di seguito. Il comando click ha come obiettivo il pulsante Go!, storeAlert cattura il messaggio in alertMessage e echo lo stampa.

Selenium Script IDE con comandi click, storeAlert ed echo sulla pagina demo di avviso di jsbin.

Passo 3) Eseguite lo script, ma non aspettatevi di visualizzare l'avviso vero e proprio. Il riquadro di registro sottostante mostra il messaggio acquisito, anche se la finestra di dialogo non è mai stata visibile.

Selenium Log dell'IDE che mostra il testo dell'avviso recuperato da storeAlert dopo la riproduzione

conferme

Le conferme sono finestre a comparsa che offrono i pulsanti OK e ANNULLA, a differenza degli avvisi, che offrono solo il pulsante OK. I comandi utilizzabili per gestire le conferme sono analoghi a quelli degli avvisi.

  • assertConfirmation / assertNotConfirmation
  • assertConfirmationPresent / assertConfirmationNotPresent
  • negozioConferma
  • storeConfirmationPresent
  • verificaConferma / verificaNonConferma
  • verificaConfermaPresente / verificaConfermaNonPresente

Inoltre, questi comandi dicono Selenium quale pulsante scegliere, OK o ANNULLA.

  • chooseOkOnNextConfirmation / chooseOkOnNextConfirmationAndWait
  • scegliere Annulla alla conferma successiva

Inserisci questi comandi prima il comando che attiva la finestra di conferma, in modo che Selenium L'IDE sa in anticipo quale opzione scegliere. Anche in questo caso, non vedrai la finestra di conferma effettiva durante l'esecuzione dello script.

Proviamo a testare una pagina web con un pulsante programmato per segnalare se l'utente ha premuto OK o ANNULLA.

Passo 1) In Selenium IDE, imposta la base URL a http://jsbin.com. Il completo URL è http://jsbin.com/enifaf.

Passo 2) Crea lo script come mostrato di seguito. Questa volta premeremo prima il pulsante OK.

Selenium Script IDE che posiziona chooseOkOnNextConfirmation prima del clic che apre la finestra di dialogo

Passo 3) Esegui lo script e noterai che non vedi la conferma effettiva, ma la pagina web continua a segnalare quale pulsante Selenium IDE premuto.

Pagina di prova che segnala la pressione del pulsante OK nella finestra di dialogo di conferma.

Passo 4) Sostituisci il comando chooseOkOnNextConfirmation con chooseCancelOnNextConfirmation ed esegui nuovamente lo script. La pagina ora visualizzerà la scelta opposta.

Selenium Script IDE modificato per utilizzare chooseCancelOnNextConfirmation invece di chooseOkOnNextConfirmation

multiplo Windows

Se fai clic su un collegamento che apre una finestra separata, devi prima istruire Selenium Nell'IDE è necessario selezionare la finestra prima di poter accedere agli elementi al suo interno. Nell'IDE precedente si utilizzava il titolo della finestra come localizzatore.

Utilizziamo il comando selectWindow per passare da una finestra all'altra.

Useremo il link http://jsbin.com/ocinaj/1, il cui titolo è "First Window". Il collegamento ipertestuale "qui" su quella pagina apre Facebook in una nuova finestra, dopodiché diamo istruzioni Selenium IDE per fare quanto segue:

  • Trasferisci il controllo dalla finestra principale alla finestra di Facebook appena aperta utilizzando il comando selectWindow con il titolo della finestra come localizzatore.
  • Verifica il titolo della nuova finestra.
  • Seleziona nuovamente la finestra originale utilizzando il comando selectWindow con "null" come destinazione.
  • Verificare il titolo della finestra attualmente selezionata.

Il piano sopra descritto si traduce nella sequenza in quattro fasi mostrata qui.

Schema del passaggio dalla finestra principale alla nuova finestra e viceversa.

Passo 1) Impostare la base URL a http://jsbin.com.

Passo 2) Crea lo script come mostrato di seguito.

Selenium Script IDE che utilizza selectWindow, pause e verifyTitle per passare da una finestra all'altra.

Abbiamo bisogno del comando di pausa per attendere che la finestra appena aperta si carichi prima di poterne leggere il titolo.

Passo 3) Esegui lo script. Si noti che il caso di prova Il test è andato a buon fine, il che significa che siamo stati in grado di passare da una finestra all'altra e verificarne correttamente i titoli.

Risultato del passaggio verde Selenium IDE dopo la verifica di entrambi i titoli delle finestre

Ricorda sempre che impostando il target selectWindow su "null" viene selezionata automaticamente la finestra padre, in questo caso la finestra in cui si trova l'elemento "link=here".

Nota: Da quando è stato creato questo tutorial, Facebook ha modificato il titolo della sua pagina. Modifica di conseguenza il titolo previsto nello script.

Moderno Selenium Equivalenti IDE di questi comandi

Migliori Firefox-il plugin IDE è stato ritirato quando Firefox passato all'architettura WebExtensions e l'attuale Chrome, Firefox L'estensione Edge ha rinominato la maggior parte dei comandi Selenese in una forma con spazi. Il comportamento è rimasto invariato, quindi la tabella seguente è tutto ciò che serve per leggere gli script sopra riportati in relazione a un'installazione corrente.

Comando legacy in questo tutorial Corrente Selenium Comando IDE
Tornare al suo account Tornare al suo account
eco eco
negozio Testo testo del negozio
storeElementPresent memorizza l'elemento presente (o verifica la presenza dell'elemento)
assertAlert / verifyAlert avviso di asserzione / verifica dell'avviso
scegliOKallaProssimaConferma Seleziona OK alla prossima conferma
scegliere Annulla alla conferma successiva Seleziona Annulla alla prossima conferma
selectWindow (title come target) seleziona la finestra con handle=${handle}

Ci sono due differenze da sottolineare. I prompt, che l'articolo precedente non trattava, ora hanno i propri comandi: rispondere alla prossima richiesta pianifica la risposta prima che appaia la finestra di dialogo e risposta di WebDriver su prompt visibile digita in un prompt già aperto. E il passaggio tra le finestre non dipende più dal titolo della pagina. Esegui maniglia per vetrina del negozio per catturare prima un handle, poi passare handle=${yourHandle} per selezionare la finestra. Tale modifica elimina la modalità di errore descritta nella nota precedente, in cui un sito rinomina semplicemente la sua pagina e lo script smette di trovare la finestra. L'ufficiale Selenium Sito del progetto IDE Elenca l'intero set di comandi attualmente in uso.

DOMANDE FREQUENTI

Sì. ${myVariable} e ${myvariable} si riferiscono a due variabili diverse e il riferimento a una variabile che non è mai stata memorizzata restituisce una stringa vuota anziché generare un errore. Mantieni una convenzione di denominazione univoca in tutta la suite per evitare spazi vuoti silenziosi.

Sì. La sintassi ${ } viene espansa in qualsiasi Target o campo Valore, quindi funziona all'interno di un comando aperto, un XPath o un selettore CSS. È così che uno script registrato viene trasformato in uno guidato da dati acquisiti in precedenza durante l'esecuzione.

Selenese non ha operatori matematici. Usa il comando esegui script con un piccolo JavaScript che legge la variabile e restituisce il risultato, quindi memorizza il valore restituito. Ricorda che ogni valore memorizzato arriva come stringa, quindi convertilo prima.

Trattateli come valori locali a un singolo test. Affidarsi a un valore impostato da un test precedente rende la suite dipendente dall'ordine e difficile da sottoporre a debug, quindi memorizzate ciò di cui un test ha bisogno all'interno del test stesso, oppure leggetelo da un file di dati all'inizio.

Un prompt richiede del testo, non solo la scelta di un pulsante. Esegui la risposta al prompt successivo con la risposta nel campo Valore prima del comando che lo apre, oppure usa la risposta di webdriver al prompt visibile quando la finestra di dialogo è già sullo schermo.

Gli strumenti di apprendimento automatico possono proporre una sequenza di comandi a partire da una descrizione in linguaggio naturale di uno scenario e suggerire localizzatori più robusti di quelli prodotti da un registratore. Anche la riparazione dei localizzatori assistita dall'IA è utile, poiché la ridenominazione di un elemento è la causa più comune di un valore memorizzato vuoto.

Sì. Esporta il test in Java or Python, quindi lascia che Copilot rifattorizzi l'elenco di comandi piatto in oggetti pagina e attese riutilizzabili. Verifica manualmente la gestione degli avvisi, perché il codice generato spesso presuppone una finestra di dialogo visibile che l'IDE ha già chiuso.

La selezione basata sul titolo diventa ambigua e si rischia di scegliere la finestra sbagliata. È proprio per questo che l'IDE attuale preferisce gli handle: catturane uno con memorizza l'handle della finestra subito dopo l'apertura, quindi passa a quello con handle=${yourHandle}.

Riassumi questo post con: