Gestione dei cookie in Selenium WebDriver

Un cookie HTTP è composto da informazioni sull'utente e le sue preferenze. Memorizza le informazioni utilizzando una coppia chiave-valore. È una piccola porzione di dati inviata dall'applicazione Web e memorizzata nel browser Web, mentre l'utente sta navigando in quel sito Web.

Fare clic qui per informazioni sul test dei cookie.

In questo tutorial impareremo:

  • Comandi di query al selenio per i cookie
  • Perché maneggiare i biscotti con il selenio?
  • Demo: gestione dei cookie in Selenium.
  • Passaggio 1) Memorizzazione delle informazioni sui cookie.
  • Passaggio 2) Utilizzo dei cookie memorizzati per accedere all'applicazione.

Comandi di query al selenio per i cookie

In Selenium Webdriver, possiamo interrogare e interagire con i cookie con il seguente metodo integrato:

driver.manage (). getCookies (); // Restituisce l'elenco di tutti i cookiedriver.manage (). getCookieNamed (arg0); // Restituisce un cookie specifico in base al nomedriver.manage (). addCookie (arg0); // Crea e aggiungi il cookiedriver.manage (). deleteCookie (arg0); // Elimina cookie specificodriver.manage (). deleteCookieNamed (arg0); // Elimina cookie specifico in base al nomedriver.manage (). deleteAllCookies (); // Elimina tutti i cookie

Perché maneggiare i biscotti con il selenio?

Ogni cookie è associato a un nome, valore, dominio, percorso, scadenza e lo stato di sicurezza o meno. Per convalidare un client, un server analizza tutti questi valori in un cookie.

Quando si esegue il test di un'applicazione Web utilizzando il driver Web selenio, potrebbe essere necessario creare, aggiornare o eliminare un cookie.

Ad esempio, quando si automatizza l'applicazione per lo shopping online, molti hanno bisogno di automatizzare scenari di test come effettuare un ordine, visualizzare il carrello, informazioni sul pagamento, conferma dell'ordine, ecc.

Se i cookie non vengono memorizzati, sarà necessario eseguire ogni volta un'azione di accesso prima di eseguire gli scenari di test sopra elencati. Ciò aumenterà lo sforzo di codifica e il tempo di esecuzione.

La soluzione è memorizzare i cookie in un file. Successivamente, recupera i valori del cookie da questo file e aggiungi ad esso la tua sessione corrente del browser. Di conseguenza, puoi saltare i passaggi di accesso in ogni caso di test perché la sessione del driver contiene queste informazioni.

Il server delle applicazioni ora considera la sessione del browser come autenticata e ti porta direttamente all'URL richiesto.

Demo: gestione dei cookie in Selenium.

Useremo http://demo.guru99.com/test/cookie/selenium_aut.php per il nostro scopo dimostrativo.

Questo sarà un processo in 2 fasi.

Passaggio 1) Accedi all'applicazione e salva il cookie di autenticazione generato.

Passaggio 2) Utilizzato il cookie memorizzato, per accedere nuovamente all'applicazione senza utilizzare ID utente e password.

Passaggio 1) Memorizzazione delle informazioni sui cookie.

pacchetto CookieExample;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.Cookie;public class cookieRead {public static void main (String [] args){Driver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");driver = nuovo ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Inserisci ID e-mail e password Se sei già registratodriver.findElement (By.name ("nomeutente")). sendKeys ("abc123");driver.findElement (By.name ("password")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). click ();// crea un file denominato Cookies per memorizzare le informazioni di accessoFile file = nuovo file ("Cookies.data");provare{// Elimina il vecchio file se esistefile.delete ();file.createNewFile ();FileWriter fileWrite = nuovo FileWriter (file);BufferedWriter Bwrite = nuovo BufferedWriter (fileWrite);// loop per ottenere le informazioni sui cookie// loop per ottenere le informazioni sui cookieper (Cookie ck: driver.manage (). getCookies ()){Bwrite.write ((ck.getName () + ";" + ck.getValue () + ";" + ck.getDomain () + ";" + ck.getPath () + ";" + ck.getExpiry () + ";" + ck.isSecure ()));Bwrite.newLine ();}Bwrite.close ();fileWrite.close ();}cattura (eccezione ex){ex.printStackTrace ();}}}

Spiegazione del codice:

  • Crea istanza WebDriver
  • Visitiamo il sito Web utilizzando driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
  • Accedi all'applicazione
  • Leggi l'informativa sui cookie utilizzando
    driver.manage (). getCookies (); 
  • Memorizza le informazioni sui cookie utilizzando FileWriter Class per scrivere flussi di caratteri e BufferedWriter per scrivere il testo in un file da creare in un file Cookies.data
  • Il file "Cookies.data" memorizza tutte le informazioni sui cookie insieme a "Nome, Valore, Dominio, Percorso". Possiamo recuperare queste informazioni e accedere all'applicazione senza inserire le credenziali di accesso.
  • Una volta eseguito il codice precedente, il file Cookie.data viene creato nella struttura delle cartelle del progetto come mostrato nella schermata seguente. Apri il file Cookie.data, puoi vedere le credenziali di accesso dell'AUT salvate nel formato di Cookie, vedi schermata evidenziata in basso

Passaggio 2) Utilizzo dei cookie memorizzati per accedere all'applicazione.

Ora accediamo al cookie generato nel passaggio 1 e utilizziamo il cookie generato per autenticare la nostra sessione nell'applicazione

pacchetto CookieExample;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.Date;import java.util.StringTokenizer;import org.openqa.selenium.Cookie;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;classe pubblica CookieWrite{public static void main (String [] args) {Driver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");driver = nuovo ChromeDriver ();provare{File file = nuovo file ("Cookies.data");FileReader fileReader = nuovo FileReader (file);BufferedReader Buffreader = nuovo BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {Token di StringTokenizer = nuovo StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Nome stringa = token.nextToken ();Valore stringa = token.nextToken ();String domain = token.nextToken ();Percorso stringa = token.nextToken ();Data di scadenza = null;String val;if (! (val = token.nextToken ()). equals ("null")){scadenza = nuova data (val);}Boolean isSecure = new Boolean (token.nextToken ()).booleanValue ();Cookie ck = nuovo Cookie (nome, valore, dominio, percorso, scadenza, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Questo aggiungerà il cookie memorizzato alla tua sessione corrente}}} catch (eccezione ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}

OUTPUT: si viene indirizzati direttamente alla schermata di successo dell'accesso senza immettere l'ID utente e la password di input

NOTA: utilizzare l'aggiornamento hardware nel caso in cui venga visualizzata la pagina di accesso dopo aver eseguito lo script precedente.

Conclusione

In questo modo, puoi evitare di inserire il nome utente e la password sul server convalidandoli ancora e ancora per ogni test con l'aiuto di Selenium Webdriver, risparmiando così molto tempo.

Questo articolo è fornito da Mangesh Waghmare

Articoli interessanti...