Selenium Estensioni principali (User-Extensions.js)
โก Riepilogo intelligente
Selenium Le estensioni principali, chiamate anche estensioni utente, aggiungono azioni personalizzate, metodi di accesso e strategie di localizzazione a Selenium IDE allegando JavaFunzioni di script per il Selenium e oggetti prototipo di PageBot all'avvio dell'IDE.
Selenium Estensioni principali
Per comprendere le estensioni, cerchiamo innanzitutto di comprendere i tre pilastri di Selenium IDEOgni comando che registri o digiti nell'IDE appartiene a una delle tre categorie seguenti, e ogni schermata mostra come appare tale categoria nell'elenco dei comandi dell'IDE.
- Azione: Quale operazione stai eseguendo sulla schermata dell'interfaccia utente?
- Accessori / Asserzione: Quali verifiche effettuate sui dati ricevuti dall'interfaccia utente?
- Strategia di localizzazione: Come trovare l'elemento nell'interfaccia utente.
Selenium L'IDE viene fornito con una libreria matura che contiene giร numerose azioni, metodi di accesso, asserzioni e strategie di localizzazione.
A volte, tuttavia, un progetto necessita di funzionalitร non presenti in quella libreria. In tal caso, รจ possibile espandere la libreria aggiungendo una propria estensione personalizzata. Queste estensioni personalizzate sono chiamate interno utente.
Ad esempio, supponiamo di aver bisogno di un'azione che converta il testo in maiuscolo prima di inserirlo in un elemento web. Poichรฉ tale azione non รจ presente nella libreria predefinita, รจ necessario creare un'estensione utente personalizzata. In questo tutorial imparerai come creare un'estensione utente che converte il testo in maiuscolo.
โ ๏ธ Prima di iniziare: il flusso di lavoro qui descritto appartiene a Selenium Nucleo e l'originale Firefox-collegare Selenium IDE. Selenium Core รจ stato ritirato e il supporto per le estensioni utente รจ stato rimosso da Selenium barattoli in Selenium 3. I passaggi e il codice seguenti sono stati mantenuti perchรฉ un gran numero di suite Selenese obsolete ne dipendono ancora; la soluzione moderna sostitutiva รจ descritta piรน avanti in questo articolo.
Requisito per creare un Selenium Estensione utente
Per creare un'estensione utente per Selenium IDE, hai bisogno dei concetti di base di JavaCopione e, in particolare, il JavaOggetto prototipo dello script. Il diagramma seguente mostra i due oggetti prototipo a cui si collega un'estensione utente.
Per creare la tua estensione utente, scrivi JavaMetodi di scripting e aggiungili al Selenium prototipo dell'oggetto e al prototipo dell'oggetto PageBot.
Come Selenium L'IDE riconosce un'estensione utente
Dopo che un'estensione utente รจ stata aggiunta a Selenium IDE e l'IDE รจ avviato, ogni funzione registrata su quelle JavaLo script prototipi รจ caricato e Selenium L'IDE riconosce ciascun comando tramite il suo nome. Ecco perchรฉ i prefissi di denominazione nella sezione successiva non sono una scelta di stile, ma il modo in cui l'IDE classifica il comando.
Come creare un'estensione utente
Passaggio 1) Azione โ tutte le azioni iniziano con doSe l'azione converte il testo in maiuscolo, il suo nome รจ doTextUpperCase. Quando aggiungi questo metodo di azione a Selenium IDE, l'IDE stesso crea un metodo di attesa corrispondente, quindi doTextUpperCase produce anche la funzione di attesa testoMaiuscoloEAttendiIl metodo puรฒ accettare due parametri.
Esempio: Azione con testo in maiuscolo
Selenium.prototype.doTextUpperCase = function(locator, text) { // Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text var element = this.page().findElement(locator); // Create the text to type text = text.toUpperCase(); // Replace the element text with the new text this.page().replaceText(element, text); };
Passaggio 2) Accessori / Asserzione โ tutti gli utenti registrati sul Selenium Il prototipo dell'oggetto รจ preceduto da ottenere or isAd esempio, getValueFromCompoundTable o isValueFromCompoundTable. Un accessor puรฒ accettare due parametri, uno per la destinazione e uno per il campo valore nel caso di test. Lo screenshot seguente mostra come appaiono questi prefissi una volta caricata l'estensione.
Per ogni accessor, Selenium L'IDE genera le corrispondenti funzioni di verifica precedute da verificare and affermare, piรน una funzione di attesa preceduta da attendere.
Esempio: per gli accessori di testo in maiuscolo
Selenium.prototype.assertTextUpperCase = function(locator, text) { // All locator-strategies are automatically handled by "findElement" var element = this.page().findElement(locator); // Create the text to verify text = text.toUpperCase(); // Get the actual element value var actualValue = element.value; // Make sure the actual value matches the expected Assert.matches(expectedValue, actualValue); }; Selenium.prototype.isTextEqual = function(locator, text) { return this.getText(locator).value===text; }; Selenium.prototype.getTextValue = function(locator, text) { return this.getText(locator).value; };
Fase 3) Strategia di localizzazione โ se vuoi creare la tua funzione per individuare un elemento, estendi il prototipo PageBot con una funzione preceduta da localizzareElementoPerRichiede due parametri: la stringa di localizzazione e il documento in cui cercare l'elemento.
Esempio: per il localizzatore di testo in maiuscolo
// The "inDocument" is a document you are searching. PageBot.prototype.locateElementByUpperCase = function(text, inDocument) { // Create the text to search for var expectedValue = text.toUpperCase(); // Loop through all elements, looking for ones that have // a value === our expected value var allElements = inDocument.getElementsByTagName("*"); // This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element. for (var i = 0; i < allElements.length; i++) { var testElement = allElements[i]; if (testElement.innerHTML && testElement.innerHTML === expectedValue) { return testElement; } } return null; };
Salva tutte e tre le funzioni in un unico file denominato user-extensions.jsIl file รจ semplice JavaSi tratta di uno script, quindi qualsiasi editor di testo รจ sufficiente.
Come utilizzare la nuova estensione Core
Il caricamento del file รจ un'operazione in quattro fasi nell'originale Firefox-plugin IDE. Ogni schermata qui sotto corrisponde al passaggio numerato accanto.
- Vai su Selenium IDE e fai clic Opzioni -> Opzioniโฆ
- Nel General sezione, selezionare la posizione del appena creato Selenium Estensione del nucleo.
- Clicchi OK e riavvia Selenium SDI.
- Troverai l'estensione nell'elenco dei comandi.
Selenium Estensioni principali vs Selenium Estensioni IDE
Nei materiali piรน datati i due termini vengono usati in modo intercambiabile, ma descrivono livelli diversi, e la distinzione รจ importante quando si decide dove inserire la logica personalizzata.
| Aspetto | Selenium Estensione principale | Selenium estensione IDE |
|---|---|---|
| Ciรฒ che estende | La libreria di comandi Selenese utilizzata durante la riproduzione | L'applicazione IDE stessa |
| File caricato | user-extensions.js | user-extensions-ide.js nell'IDE legacy, un manifesto del plugin nell'IDE corrente |
| Utilizzo tipico | Nuove azioni, accessor e strategie di localizzazione | Nuove voci di menu, pannelli, formati e comportamento del registratore |
| Oggetti toccati | Selenium.prototipo e PageBot.prototipo | API dell'editor e del registratore IDE |
| Corse durante | Esecuzione del test | Creazione e registrazione |
In breve, un'estensione Core modifica le funzionalitร di un test, mentre un'estensione IDE modifica le funzionalitร dello strumento.
Come il moderno Selenium L'IDE sostituisce user-extensions.js
Migliori Firefox-collegare Selenium L'IDE ha smesso di funzionare quando Firefox รจ passato all'architettura WebExtensions e l'IDE รจ stato riscritto come Chrome, Firefox e l'estensione per il browser Edge. Tale riscrittura ha rimosso il campo Opzioni mostrato sopra, quindi non c'รจ modo di indicare un file user-extensions.js. Due alternative supportate coprono lo stesso ambito.
- Il comando di esecuzione dello script. Per una sola volta JavaScript, aggiungi un script eseguito or esegui script asincrono Esegui direttamente il test e memorizza il risultato in una variabile. Questa รจ la soluzione piรน simile a una piccola azione personalizzata.
- Un plugin. Per i comandi riutilizzabili, crea un'estensione del browser che registri un manifesto con l'IDE. Il manifesto dichiara ogni nuovo comando con un ID, un nome, un tipo opzionale e la documentazione, e puรฒ anche dichiarare nuovi localizzatori.
Il manifesto viene registrato inviando un messaggio all'estensione IDE, come mostrato nell'ufficiale Selenium documentazione del plugin IDE.
browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);
La convenzione di denominazione sopravvive alla migrazione: un comando plugin viene ancora dichiarato una sola volta e poi riutilizzato in ogni test, esattamente come avveniva per un'estensione Core.
Estensioni e plug-in popolari utilizzati in Selenium IDE
I componenti aggiuntivi elencati di seguito erano i piรน utilizzati nella versione precedente dell'IDE. Molti di essi, come il controllo del flusso e la funzionalitร di acquisizione schermata in caso di errore, sono ora integrati nell'IDE attuale o disponibili come plugin mantenuti.
| Nome | Missione |
|---|---|
| Preferiti | Per contrassegnare una suite di test come preferita ed eseguirla con un solo clic |
| FlexPilot X | Per l'automazione basata su Flex |
| FlexMonkium | Per la registrazione e la riproduzione basate su Adobe Flex analisi in Selenium IDE |
| Registrazione dei file | Per salvare i log in un file |
| Il controllo del flusso | Per controllare il flusso di esecuzione del test |
| Evidenzia elementi | Per evidenziare un controllo Web |
| Attesa implicita | Attendere un elemento per un determinato limite di tempo |
| Screenshot in caso di errore | Fai uno screenshot in caso di fallimento |
| Risultati del test | Salvare l' caso di prova risultato per una suite di test in un clic |
Il vecchio SeleniumLa pagina di download HQ che ospitava questi file non esiste piรน. I plugin attuali e l'IDE stesso sono distribuiti da Selenium Sito del progetto IDE e da Chrome, Firefox e i negozi di componenti aggiuntivi di Edge.
Scarica la Selenium Estensione Core utilizzata in questo tutorial









