Test del browser con script IDE Selenium
Selenium Il test tramite script IDE è una tipologia di test sintetici tramite script del browser offerti da Instana.
Utilizza uno script IDE Selenium (chiamato anche script laterale) per simulare le interazioni utente con le tue applicazioni web.
Si consiglia di iniziare con un semplice script IDE di tipo « Selenium », come descritto nella sezione «Registrazione di uno script IDE di tipo “ Selenium ” », oppure di utilizzare lo script di esempio « Selenium ».
A questo punto, potrai utilizzare le funzionalità avanzate offerte da Instana Synthetic, come l'accesso alle credenziali degli utenti, l'acquisizione di screenshot e così via, come descritto nella sezione "Ampliare le funzionalità di test negli script IDE di Selenium ". Se desideri utilizzare le variabili globali fornite da Instana, come, $secure o le API estese per il test dei browser, come await $browser.takeScreenshot(), puoi utilizzare il runner locale " Instana Synthetic-browser-script ". Grazie a questo programma locale, potrai testare ed eseguire il debug del tuo script IDE di Selenium in locale, poiché l'IDE di Selenium non è in grado di riconoscere queste API avanzate né di cancellare i cookie o le sessioni per te ad ogni esecuzione del test.
Registrazione di uno script IDE di tipo " Selenium "
Registra gli script di base
Scarica e installa l'IDE di Selenium.
È possibile scaricare e installare l'IDE " Selenium " per gli utenti di Firefox e e Chrome.
Per gli utenti di Firefox, aggiungete l 'estensione Firefox al browser. Quindi, se necessario, riavvia il browser.
Per gli utenti di Chrome, seguire una delle seguenti procedure:
Nota: l'estensione per Chrome " Selenium " non è più disponibile sul Chrome Web Store.Installa l'IDE di Selenium utilizzando la riga di comando o il prompt dei comandi.
npm install -g selenium-ide selenium-idePer ulteriori informazioni sulle istruzioni di installazione, consultare il file README.
Scarica l'IDE dalla pagina delle versioni di Selenium IDE GitHub in base al tuo sistema operativo ed esegui l'applicazione in locale.
Nota: l'applicazione IDE " Selenium " salva i progetti nel formato " 3.0 ", che il motore di riproduzione "Synthetic PoP " BrowserScript non supporta ancora.Per garantire la compatibilità, è necessario modificare manualmente il numero di versione nel
.sidefile da 3.0 a 2.0.Dopo aver salvato il progetto nell'applicazione IDE di Selenium, per modificare il
.sidefile manualmente, procedere come segue:Apri il
.sidefile in un editor di testo.Trova il campo "versione" nel file. L'esempio seguente mostra l'aspetto del campo "versione":
{ "id": "some-id", "version": "3.0", ... }Modifica la versione in 2.0.
Salvare il file.
Apri Selenium IDE dalla barra dei menu. Fare clic su
Record a new test in a new projecte registrare uno script seguendo le istruzioni.Quando Selenium IDE registra, genera un comando per ogni azione utente in uno script.

Eseguire azioni di prova per cercare le parole chiave
instanain Google.Premere
Enterper passare alla pagina dei risultati della ricerca. Aggiungere una condizionewaitin questa pagina; fare clic con il tasto destro del mouse sull'icona di ricerca e selezionareSelenium IDE -> Wait For -> Present. Immettere un valore per il timeout nella proprietàValueper attendere la visualizzazione dell'elemento, ad esempio 10000 per attendere fino a 10 secondi.
Aggiungere un'asserzione per verificare il test. Aggiungere un comando
assert; fare clic con il pulsante destro del mouse sulla pagina e selezionareSelenium IDE -> Assert -> Title.Quindi, terminate le registrazioni, fare clic sul pulsante Interrompi registrazione in Selenium IDE.

È possibile aggiungere comandi come
send keyscon il valore di${KEY_ENTER}per digitareEnternell'area del testo di ricerca.Fornite un valore di timeout come
10000nella proprietàValuedel comandowait for element presentper attendere una condizione. Utilizzare lo stesso valoreTargetusato nel passaggio precedente per individuare l'elemento web dell'area di testo di ricerca. Questo è un passo importante per garantire che il test venga eseguito in modo stabile e con successo. Nel campo dei test del browser, questo viene definito Attese esplicite. La logica interroga l'applicazione per verificare la presenza di una condizione specifica prima di passare al comando successivo nel codice. Se la condizione non viene soddisfatta prima di un determinato valore di timeout, viene visualizzato un errore di timeout.Quindi testate il vostro script, facendo clic su esegui.

Dopo la registrazione, salvare lo script in un file
.side.
Per ulteriori informazioni, consultare la guida introduttiva all'IDE su Selenium. L'esempio completo è riportato nella sezione seguente.
Ti consigliamo di utilizzare il runner locale per script di browser sintetico di Instana per testare ed eseguire il debug dello script registrato in locale. Il local runner dello script del browser Synthetic offre lo stesso ambiente di esecuzione di Synthetics su Instana e consente di cancellare i cookie o i profili utente ad ogni esecuzione del test.
A questo punto puoi creare un test IDE per l' Selenium e su Instana, selezionare Create Synthetic Test -> Browser Script Test -> Switch
to Advanced Mode, cliccare Add Scriptsu e caricare il .side file.
Se non riesci a visualizzare il grafico cronologico nei risultati del test su Instana. È possibile verificare se l'ID del test si trova nella proprietà
suites -> tests. Senza questo ID, il test non viene riprodotto."suites": [{ "id": "7de135e9-a6c4-4b39-b28a-092bb0d7cbac", "name": "Search Instana", "persistSession": false, "parallel": false, "timeout": 300, "tests": ["c0283e5a-8cbd-492f-8b3d-f2476f319264"] }],Instana supporta solo test serializzati nelle suite di test; pertanto, le seguenti proprietà negli script dell'IDE Selenium vengono sovrascritte dal motore di riproduzione del browser Instana :
- "persistSession": falso
- "parallelo": false
Come attendere il verificarsi di una condizione
È possibile utilizzare i comandi Attesa esplicita disponibili per attendere che una condizione sia soddisfatta prima di procedere con il comando successivo nel codice. L'attesa esplicita è una best practice nei test dei browser. Se la condizione specificata non viene soddisfatta prima di un determinato valore di timeout, viene visualizzato un errore di timeout. Il test fallisce con un errore. Il comando
waitpiù utilizzato èwait for element present. Inserire il valore del timeout in millisecondi nella proprietàvalue.{ "id": "d13e50bd-f698-4a04-9420-701a21dcde8d", "comment": "", "command": "waitForElementPresent", "target": "id=searchform", "targets": [], "value": "10000" }È possibile fare una pausa di qualche millisecondo con il comando
pause. Nell'esempio seguente, il tempo di attesa è di 3 secondi.{ "id": "60135a5c-6aee-4b9b-86a5-d9d0fa41deb7", "comment": "", "command": "pause", "target": "3000", "targets": [], "value": "" }
Come verificare i risultati dei test
Per convalidare automaticamente i risultati dei test, si possono usare le asserzioni e Attesa esplicita. Se la convalida fallisce, lo stato del risultato del test viene visualizzato come fallito. È possibile monitorare i fallimenti dei test con Synthetic Smart Alert.
- È possibile attendere che l'elemento richiesto sia presente nell'interfaccia utente prima di un timeout designato con i comandi
wait for element present,assert element presento altri Attesa esplicita. Impostare un valore per il timeout nella proprietàvaluedei comandiwait for. Per i comandiassert, il valore di timeout è di 15 secondi.{ "id": "e9a3161a-de29-4557-bbf6-9950c1881425", "comment": "", "command": "assertElementPresent", "target": "linkText=About", "targets": [], "value": "" } - È possibile utilizzare il comando
assert titleper convalidare i titoli delle pagine.{ "id": "46eb59c2-5fd6-4481-b3e8-eaaddab79a69", "comment": "", "command": "assertTitle", "target": "instana - Google Search", "targets": [], "value": "" } - È possibile utilizzare il comando
assert textper confermare che il testo di un elemento contenga il valore fornito. La proprietàvaluedi questo comando deve corrispondere a una stringa esatta. Selenium IDE non supporta la corrispondenza dei modelli per il comando.{ "id": "ed733875-5682-4a3b-9a3e-9286f88a62ca", "comment": "", "command": "assertText", "target": "linkText=About", "targets": [], "value": "About" }
Come visualizzare i messaggi nei log della console
È possibile usare il comando echo per stampare i messaggi di registrazione nei registri della console per aiutare a risolvere i problemi.
{
"id": "03e23d25-38e3-4051-81ff-740109350ee8",
"comment": "",
"command": "echo",
"target": "Generate a TOTP token from a TOTP key",
"targets": [],
"value": ""
}
Come scorrere verso il basso con JavaScript
La maggior parte dei casi di test richiede lo scorrimento della pagina per rendere un elemento web focalizzato, visibile o cliccabile. Nello script Selenium IDE, è necessario utilizzare JavaScript per lo scorrimento. Utilizzate il comando runScript o executeScript per implementare lo scorrimento come mostrato nell'esempio seguente:
Scorrete a metà dell'altezza della pagina:
{ "id": "e4d8bc94-cd2c-4648-b64e-952ccfa89aaa", "comment": "", "command": "runScript", "target": "window.scrollTo(0, document.body.scrollHeight/2)", "targets": [], "value": "" }Scorrere fino alla fine della pagina:
{ "id": "e4d8bc94-cd2c-4648-b64e-952ccfa89aaa", "comment": "", "command": "runScript", "target": "window.scrollTo(0, document.body.scrollHeight)", "targets": [], "value": "" }Scorrere all'inizio della pagina:
{ "id": "e4d8bc94-cd2c-4648-b64e-952ccfa89aaa", "comment": "", "command": "runScript", "target": "window.scrollTo(0, 0)", "targets": [], "value": "" }Scorrere fino all'elemento web e fare clic su di esso:
Attendere che l'elemento venga individuato, quindi scorrerlo e fare clic su di esso.
{ "id": "d13e50bd-f698-4a04-9420-701a21dcde8d", "comment": "", "command": "waitForElementPresent", "target": "id=pnnext", "targets": [], "value": "20000" }, { "id": "b345d354-1d95-45d0-81ab-7c78695ed040", "comment": "", "command": "runScript", "target": "const el = document.getElementById('pnnext'); el.scrollIntoView(); el.click();", "targets": [], "value": "" }{ "id": "d13e50bd-f698-4a04-9420-701a21dcde8d", "comment": "", "command": "waitForElementPresent", "target": "css=#pnnext > span:nth-child(2)", "targets": [], "value": "20000" }, { "id": "b345d354-1d95-45d0-81ab-7c78695ed040", "comment": "", "command": "runScript", "target": "const el = document.querySelector('#pnnext > span:nth-child(2)'); el.scrollIntoView(); el.click();", "targets": [], "value": "" }
Come inviare le chiavi
- Per fare doppio clic nell'area del filtro e digitare i tasti, si può usare il seguente esempio:
{ "id": "60135a5c-6aee-4b9b-86a5-d9d0fa41deb1", "comment": "", "command": "doubleClickAt", "target": "id=repos-list-filter-input", "targets": [], "value": "" }, { "id": "60135a5c-6aee-4b9b-86a5-d9d0fa41deb1", "comment": "", "command": "type", "target": "id=repos-list-filter-input", "targets": [], "value": "instana" } - Per digitare il tasto
Enterdopo una pausa di 3 secondi nell'area del filtro, si può utilizzare il seguente esempio:{ "id": "60135a5c-6aee-4b9b-86a5-d9d0fa41deb2", "comment": "", "command": "pause", "target": "3000", "targets": [], "value": "" }, { "id": "d0239041-5bdf-42be-b920-c5055628f161", "comment": "", "command": "sendKeys", "target": "id=repos-list-filter-input", "targets": [], "value": "${KEY_ENTER}" },
Esempio
Nell'esempio seguente, lo script IDE " Selenium " viene utilizzato per cercare le parole chiave " Instana " in un motore di ricerca:
{
"id": "d54cb226-42e2-493a-9965-c05d209da23a",
"version": "2.0",
"name": "test-google-search",
"url": "https://www.google.com",
"tests": [{
"id": "c0283e5a-8cbd-492f-8b3d-f2476f319264",
"name": "search instana",
"commands": [{
"id": "cd6aaf21-62f8-4d7f-af0a-5fe8beee8fde",
"comment": "",
"command": "open",
"target": "/",
"targets": [],
"value": ""
}, {
"id": "f6ef14b9-0f06-4b62-bb29-41c21a298703",
"comment": "",
"command": "click",
"target": "id=APjFqb",
"targets": [],
"value": ""
}, {
"id": "ed0b72f9-8da9-4413-8088-819b89f1f6dc",
"comment": "",
"command": "type",
"target": "id=APjFqb",
"targets": [],
"value": "instana"
}, {
"id": "f9746499-1d97-4f83-aa8a-a5419d9e3922",
"comment": "",
"command": "sendKeys",
"target": "id=APjFqb",
"targets": [],
"value": "${KEY_ENTER}"
}, {
"id": "93939f21-739f-4c84-bb2e-580af6b1bc76",
"comment": "",
"command": "waitForElementPresent",
"target": "css=.zgAlFc svg",
"targets": [],
"value": "10000"
}, {
"id": "331e3fc1-9baa-4519-9814-3105d6d06937",
"comment": "",
"command": "assertTitle",
"target": "instana - Google Search",
"targets": [],
"value": ""
}]
}],
"suites": [{
"id": "7de135e9-a6c4-4b39-b28a-092bb0d7cbac",
"name": "Search Instana",
"persistSession": false,
"parallel": false,
"timeout": 300,
"tests": ["c0283e5a-8cbd-492f-8b3d-f2476f319264"]
}],
"urls": ["https://www.google.com/"],
"plugins": []
}
Ampliare le funzionalità di test negli script dell'IDE di Selenium
Instana I test sintetici del browser offrono maggiori funzionalità rispetto a un IDE d Selenium :
Instana Synthetic fornisce risultati di test dettagliati, che includono grafici cronologici, file in formato HAR ( HTTP ), screenshot, registrazioni, log del browser e log della console.
Instana Synthetic offre API più avanzate per il test dei browser e variabili globali.
Se desideri modificare gli script IDE di Selenium utilizzando le API avanzate per il test dei browser e le variabili globali fornite da Instana Synthetic, consulta gli esempi riportati di seguito. Per testare ed eseguire il debug dei tuoi script con queste funzionalità avanzate, devi utilizzare il local runner di Synthetic-browser-script, poiché l'IDE di Selenium non le supporta.
Come accedere alle credenziali dell'utente
Accedere alle credenziali utente definite nel server backend Instana
Per creare una credenziale con l' API Synthetic Open, procedere come segue:
- Assicurati di disporre delle autorizzazioni corrette.
- Utilizza ` OpenAPI ` per creare una credenziale passando le variabili
credentialNamecredentialValue`` e ``.
Quindi, nello script di test, utilizzare
$secure.credentialNameper fare riferimento alla credenziale creata, ad esempio,$secure.passwordo$secure.username.${}nella proprietàValuenello script IDE Selenium è per fare riferimento alle variabili predefinite per distinguerle dalle stringhe costanti.$secure.credentialNameè come accedere alle credenziali utente in Instana.
Nota: è supportato solo il$secure.credentialNameformato. Il$secure[credentialName]formato non è supportato.{ "id": "98b7df8f-ec53-47f9-b7a0-0eedbfc64ff0", "comment": "", "command": "click", "target": "id=email", "targets": [], "value": "" }, { "id": "83ae509f-4247-4acc-ab99-46ef4c620f4f", "comment": "", "command": "type", "target": "id=email", "targets": [], "value": "${$secure.username}" }Generare una password unica basata sul tempo (TOTP) da una chiave segreta per accedere al sito web con l'autenticazione a due fattori (2FA).
{ "id": "ec51296b-4d16-4167-ac83-ba87f89cc0c7", "comment": "Generate a TOTP token from a TOTP key", "command": "executeScript", "target": "return $browser.generateTOTPToken($secure.totpKey);", "targets": [], "value": "totpToken" }, { "id": "3cbc306a-ed33-46bf-9923-92752b0466f2", "comment": "", "command": "type", "target": "id=password", "targets": [], "value": "${totpToken}" }
Come fare uno screenshot
È possibile trovare gli screenshot nella pagina dei dettagli dei risultati dei test su Instana.
{
"id": "b49ff289-f041-44f1-836b-ba7e993c3f07",
"comment": "",
"command": "executeScript",
"target": "await $browser.takeScreenshot()",
"targets": [],
"value": ""
}
Come utilizzare il $synthetic per accedere alle variabili globali
Si può usare $synthetic.xxxx, $secure.xxx o $env.xxx per accedere alle variabili globali, come mostrato nell'esempio seguente.
Per utilizzare le variabili nella sintassi delle stringhe dei modelli in JavaScript, come nel echo comando, usa la sintassi standard di Node.js e inserisci le variabili in ${}.
{
"id": "da853ea2-7253-4938-ad2d-9272f4c6d3e2",
"comment": "",
"command": "echo",
"target": "tag1's value is ${$synthetic.tag1}",
"targets": [],
"value": ""
}
Come utilizzare l' $attributesAPI per personalizzare gli attributi
{
"id": "26438c58-868d-4d6d-9e6f-dbe9d8f373fd",
"comment": "",
"command": "executeScript",
"target": "$attributes.set('regionName', 'green-region');",
"targets": [],
"value": ""
}
È possibile accedere agli attributi personalizzati impostati da ` $attributesAPI ` nello script e alle proprietà personalizzate definite nella customProperties definizione del test tramite la synthetic.tags metrica. È possibile utilizzare il synthetic.tags parametro per filtrare i risultati del test oppure passare un valore personalizzato al payload personalizzato di Smart Alert. 
Come utilizzare le API avanzate di Instana per il test dei browser
Utilizza i comandi Selenium
runScripteexecuteScriptper richiamare le API di test del browser avanzate.È possibile utilizzare i comandi ` Selenium
runScript` e ``executeScriptper richiamare le API di test del browser predefinite e le variabili globali in ` Instana Browser Testing`.La differenza tra
executeScripterunScriptè cheexecuteScriptsupporta la memorizzazione del valore restituito in una variabile. È quindi possibileassertoechola variabile con${xxx}. Per memorizzare il valore restituito, utilizzare la parola chiavereturne fornire un nome di variabile nel campo di inputvalue.{ "id": "ec51296b-4d16-4167-ac83-ba87f89cc0c7", "comment": "Generate a TOTP token from a TOTP key", "command": "executeScript", "target": "return $browser.generateTOTPToken($secure.totpKey);", "targets": [], "value": "totpToken" }, { "id": "3cbc306a-ed33-46bf-9923-92752b0466f2", "comment": "", "command": "echo", "target": "Generated TOTO token ${totpToken}", "targets": [], "value": "" }Definire una variabile di ambiente e utilizzarla nelle API di test del browser.
{ "id": "10d09a25-d101-43b0-84df-f22265b7cec6", "comment": "", "command": "storeJson", "target": "{\"proxy\": \"<proxy_server>:8080\", \"noproxy\": \"localhost,google.com,192.168.1.0/24\"}", "targets": [], "value": "proxyConfig" }, { "id": "237bd334-d963-4a73-b9bb-4c31f1dce051", "comment": "", "command": "runScript", "target": "await $browser.setProxy(${proxyConfig.proxy}, ${proxyConfig.noproxy});", "targets": [], "value": "" }Scorrere fino all'elemento web e fare clic su di esso.
È possibile utilizzare il browser di test Instana API per implementare facilmente le operazioni di scorrimento descritte in precedenza. L'esempio riportato di seguito implementa la logica degli elementi
waiting for element present,waiting for element visible,scrollIntoVieweclick. La funzionescrollIntoViewpuò far scorrere l'elemento nell'area visibile della finestra del browser.{ "id": "b345d354-1d95-45d0-81ab-7c78695ed040", "comment": "", "command": "runScript", "target": "let element = await $browser.waitForAndFindElement(By.xpath(`//a[contains(.,'Customer stories')]`), 30000); await $browser.executeScript(`arguments[0].scrollIntoView()`, element); await $browser.executeScript(`arguments[0].click()`, element)", "targets": [], "value": "" }
Come rifiutare alcune richieste
{
"id": "2e91846e-037b-473d-a977-7fbdfe52d1a4",
"comment": "",
"command": "executeScript",
"target": "await $browser.addHostnamesToDenylist(['ajax.googleapis.com/ajax/libs/jquery']);",
"targets": [],
"value": ""
}
Come utilizzare l' $networkAPI per configurare un proxy
{
"id": "a418460e-a0a9-4c68-bbd0-fb78d6495e92",
"comment": "",
"command": "runScript",
"target": "await $network.setProxy(${proxyConfig.proxy}, ${proxyConfig.noproxy});",
"targets": [],
"value": ""
}
Esempio
Nell'esempio seguente, i comandi Selenium richiamano le API di test del browser Instana e le variabili globali.
Esempio di accesso e verifica dell'interfaccia utente di Instana