Come gestire i cookie in Selenium webdriver

Un cookie HTTP รจ composto da informazioni sull'utente e sulle sue preferenze. Memorizza le informazioni utilizzando una coppia chiave-valore. Si tratta di una piccola porzione di dati inviata dall'applicazione Web e archiviata nel browser Web, mentre l'utente naviga nel sito Web.

Clicca qui per saperne di piรน test dei cookie.

Selenium Comandi di query per i cookie

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

Selenium Comandi di interrogazione Uscita
driver.manage().getCookies(); Restituisce l'elenco di tutti i cookie
driver.manage().getCookieNamed(arg0); Restituisce cookie specifico in base al nome
driver.manage().addCookie(arg0); Crea e aggiungi il cookie
driver.manage().deleteCookie(arg0); Elimina cookie specifico
driver.manage().deleteCookieNamed(arg0); Elimina cookie specifico in base al nome
driver.manage().deleteAllCookies(); Elimina tutti i cookie

Perchรฉ gestire (accettare) i cookie in Selenium?

A ogni cookie รจ associato un nome, valore, dominio, percorso, scadenza e lo stato se รจ sicuro o meno. Per convalidare un client, un server analizza tutti questi valori in un cookie.

Quando Collaudo un'applicazione web che utilizza il driver web selenium, potrebbe essere necessario creare, aggiornare o eliminare un cookie.

Ad esempio, quando si automatizza l'applicazione per lo shopping online, รจ necessario automatizzare scenari di test come effettuare ordini, visualizzare il carrello, informazioni sul pagamento, conferma dell'ordine, ecc.

Se i cookie non vengono memorizzati, sarร  necessario eseguire ogni volta l'operazione 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. Later, recupera i valori del cookie da questo file e aggiungi ad esso la sessione corrente del browser. Di conseguenza, puoi saltare i passaggi di accesso in ogni Test Case perchรฉ la sessione del conducente contiene queste informazioni.

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

Come gestire i cookie in Selenium

Noi useremo https://demo.guru99.com/test/cookie/selenium_aut.php per il nostro scopo dimostrativo.

Questo sarร  un processo in 2 fasi.

Passo 1) Accedi all'applicazione e memorizza il cookie di autenticazione generato.

Gestisci i cookie in Selenium

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

Passaggio 1) Memorizzazione delle informazioni sui cookie

package 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)		
    {
    	WebDriver driver;	
        System.setProperty("webdriver.chrome.driver","G:///chromedriver.exe");					
		driver=new ChromeDriver();        
		driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php");

       				
        // Input Email id and Password If you are already Register		
        driver.findElement(By.name("username")).sendKeys("abc123");							
        driver.findElement(By.name("password")).sendKeys("123xyz");							
        driver.findElement(By.name("submit")).click();					
        		
        // create file named Cookies to store Login Information		
        File file = new File("Cookies.data");							
        try		
        {	  
            // Delete old file if exists
			file.delete();		
            file.createNewFile();			
            FileWriter fileWrite = new FileWriter(file);							
            BufferedWriter Bwrite = new BufferedWriter(fileWrite);							
            // loop for getting the cookie information 		
            	
            // loop for getting the cookie information 		
            for(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();	
            
        }
        catch(Exception ex)					
        {		
            ex.printStackTrace();			
        }		
    }		
}

Spiegazione del codice:

  • Crea un'istanza WebDriver
  • Visitiamo il sito Web utilizzando driver.get(โ€œhttps://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 la classe FileWriter 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 sopra, il file Cookie.data viene creato nella struttura delle cartelle del progetto come mostrato nella schermata seguente. Apri il file Cookie.data, puoi vedere che le credenziali di accesso dell'AUT sono salvate nel formato Cookie, vedi la schermata evidenziata di seguito

    Gestisci i cookie in Selenium

Passaggio 2) Utilizzo del cookie memorizzato per accedere all'applicazione

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

package 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;

public class CookieWrite		
{		
  
	public static void main(String[] args){ 
    	WebDriver driver;     
       	System.setProperty("webdriver.chrome.driver","G://chromedriver.exe");					
        driver=new ChromeDriver();					
    try{			
     
        File file = new File("Cookies.data");							
        FileReader fileReader = new FileReader(file);							
        BufferedReader Buffreader = new BufferedReader(fileReader);							
        String strline;			
        while((strline=Buffreader.readLine())!=null){									
        StringTokenizer token = new StringTokenizer(strline,";");									
        while(token.hasMoreTokens()){					
        String name = token.nextToken();					
        String value = token.nextToken();					
        String domain = token.nextToken();					
        String path = token.nextToken();					
        Date expiry = null;					
        		
        String val;			
        if(!(val=token.nextToken()).equals("null"))
		{		
        	expiry = new Date(val);					
        }		
        Boolean isSecure = new Boolean(token.nextToken()).								
        booleanValue();		
        Cookie ck = new Cookie(name,value,domain,path,expiry,isSecure);			
        System.out.println(ck);
        driver.manage().addCookie(ck); // This will add the stored cookie to your current session					
        }		
        }		
        }catch(Exception ex){					
        ex.printStackTrace();			
        }		
        driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php");					
}	
	}	

Produzione: Verrai indirizzato direttamente alla schermata di accesso riuscito senza inserire l'ID utente e la password

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

Conclusione

In questo modo puoi evitare di inserire nome utente e password sul server convalidandoli piรน e piรน volte per ogni test con l'aiuto di Selenium Webdriver, risparmiando cosรฌ molto tempo.

Riassumi questo post con: