Cum să gestionați cookie-urile în Selenium webdriver

Un cookie HTTP este format din informații despre utilizator și preferințele acestuia. Stochează informații folosind o pereche cheie-valoare. Este o mică bucată de date trimisă de la aplicația web și stocată în browser web, în ​​timp ce utilizatorul navighează pe acel site web.

Faceți clic aici pentru a afla mai multe despre testarea cookie-urilor.

Selenium Comenzi de interogare pentru cookie-uri

In Selenium Webdriver, putem interoga și interacționa cu cookie-urile cu metoda încorporată de mai jos:

Selenium Comenzi de interogare producție
driver.manage().getCookies(); Întoarceți Lista tuturor cookie-urilor
driver.manage().getCookieNamed(arg0); Returnează un cookie specific în funcție de nume
driver.manage().addCookie(arg0); Creați și adăugați cookie-ul
driver.manage().deleteCookie(arg0); Ștergeți un anumit cookie
driver.manage().deleteCookieNamed(arg0); Ștergeți un anumit cookie în funcție de Nume
driver.manage().deleteAllCookies(); Ștergeți toate cookie-urile

De ce să gestionați (acceptați) cookie-urile în Selenium?

Fiecare cookie este asociat cu un nume, valoare, domeniu, cale, expirare și starea dacă este sigur sau nu. Pentru a valida un client, un server analizează toate aceste valori într-un cookie.

Cand Testarea o aplicație web care utilizează driverul web selenium, poate fi necesar să creați, să actualizați sau să ștergeți un cookie.

De exemplu, atunci când automatizați aplicația de cumpărături online, mulți trebuie să automatizați scenariile de testare, cum ar fi plasarea comenzii, vizualizarea coșului, informațiile de plată, confirmarea comenzii etc.

Dacă cookie-urile nu sunt stocate, va trebui să efectuați o acțiune de conectare de fiecare dată înainte de a executa scenariile de testare enumerate mai sus. Acest lucru vă va crește efortul de codare și timpul de execuție.

Soluția este stocarea cookie-urilor într-un fișier. Later, preluați valorile cookie-urilor din acest fișier și adăugați la acesta sesiunea curentă de browser. Ca rezultat, puteți sări peste pașii de conectare în fiecare Caz de testare deoarece sesiunea de șofer conține aceste informații.

Serverul de aplicații tratează acum sesiunea dvs. de browser ca fiind autentificată și vă duce direct la adresa URL solicitată.

Cum să gestionați cookie-urile în Selenium

Noi vom folosi https://demo.guru99.com/test/cookie/selenium_aut.php pentru scopul nostru demonstrativ.

Acesta va fi un proces în 2 pași.

Pas 1) Conectați-vă la aplicație și stocați cookie-ul de autentificare generat.

Manipulați cookie-urile în Selenium

Pas 2) Am folosit cookie-ul stocat, pentru a vă conecta din nou la aplicație fără a utiliza userid și parola.

Pasul 1) Stocarea informațiilor despre cookie-uri

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();			
        }		
    }		
}

Explicația codului:

  • Creați o instanță WebDriver
  • Vizităm site-ul web folosind driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
  • Conectați-vă în aplicație
  • Citiți informațiile despre cookie folosind
    driver.manage().getCookies();
  • Stocați informațiile cookie folosind FileWriter Class pentru a scrie fluxuri de caractere și BufferedWriter pentru a scrie textul într-un fișier pentru a crea într-un fișier Cookies.data
  • Fișierul „Cookies.data” stochează toate informațiile cookie împreună cu „Nume, valoare, domeniu, cale”. Putem prelua aceste informații și ne putem autentifica în aplicație fără a introduce datele de conectare.
  • Odată ce rulați deasupra codului, fișierul Cookie.data este creat în structura folderului proiectului, așa cum se arată în ecranul de mai jos. Deschideți fișierul Cookie.data, puteți vedea că acreditările de conectare ale AUT sunt salvate în formatul Cookie, vedeți ecranul evidențiat mai jos

    Manipulați cookie-urile în Selenium

Pasul 2) Utilizarea cookie-urilor stocate pentru a vă autentifica în aplicație

Acum, vom accesa cookie-ul generat la pasul 1 și vom folosi cookie-ul generat pentru a ne autentifica sesiunea în aplicație

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");					
}	
	}	

ieșire: Sunteți dus direct la ecranul de conectare cu succes fără a introduce ID-ul de utilizator și parola introduse

NOTĂ: Utilizați reîmprospătarea tare în cazul în care vedeți pagina de autentificare după executarea scriptului de mai sus.

Concluzie

Astfel, puteți evita introducerea numelui de utilizator și a parolei pe server validându-le din nou și din nou pentru fiecare test cu ajutorul Selenium Webdriver și, prin urmare, economisește mult timp.