Sådan håndteres cookies i Selenium webdriver

En HTTP-cookie består af information om brugeren og dennes præferencer. Den gemmer information ved hjælp af et nøgle-værdi-par. Det er et lille stykke data, der sendes fra webapplikationen og gemmes i webbrowseren, mens brugeren browser på det pågældende websted.

Klik her for at lære mere cookie test.

Selenium Forespørgselskommandoer til cookies

In Selenium Webdriver, vi kan forespørge og interagere med cookies med nedenstående indbyggede metode:

Selenium Forespørgselskommandoer Produktion
driver.manage().getCookies(); Returner listen over alle cookies
driver.manage().getCookieNamed(arg0); Returner specifik cookie i henhold til navn
driver.manage().addCookie(arg0); Opret og tilføj cookien
driver.manage().deleteCookie(arg0); Slet specifik cookie
driver.manage().deleteCookieNamed(arg0); Slet specifik cookie i henhold til Navn
driver.manage().deleteAllCookies(); Slet alle cookies

Hvorfor håndtere (accepter) cookies i Selenium?

Hver cookie er forbundet med et navn, værdi, domæne, sti, udløb og status for, om den er sikker eller ej. For at validere en klient parser en server alle disse værdier i en cookie.

Hvornår Test en webapplikation, der bruger selenwebdriver, skal du muligvis oprette, opdatere eller slette en cookie.

For eksempel, når du automatiserer online-shopping-applikationen, har du mange brug for at automatisere testscenarier som afgiv ordre, se indkøbskurv, betalingsoplysninger, ordrebekræftelse osv.

Hvis der ikke gemmes cookies, skal du udføre login-handling hver gang, før du udfører ovenstående testscenarier. Dette vil øge din kodningsindsats og eksekveringstid.

Løsningen er at gemme cookies i en fil. Later, hent værdierne af cookie fra denne fil og føj din aktuelle browsersession til den. Som et resultat kan du springe login-trinene over i hver Test sag fordi din chaufførsession har disse oplysninger.

Applikationsserveren behandler nu din browsersession som autentificeret og fører dig direkte til din anmodede URL.

Sådan håndteres cookies i Selenium

Vi vil bruge https://demo.guru99.com/test/cookie/selenium_aut.php til vores demo formål.

Dette vil være en 2-trins proces.

Trin 1) Log ind på applikationen og gem den genererede autentificeringscookie.

Håndter cookies ind Selenium

Trin 2) Brugte den gemte cookie til igen at logge ind på applikationen uden at bruge bruger-id og adgangskode.

Trin 1) Lagring af cookieoplysninger

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

Kodeforklaring:

  • Opret WebDriver-instans
  • Vi besøger webstedet ved hjælp af driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
  • Log ind på applikationen
  • Læs cookieoplysningerne ved hjælp af
    driver.manage().getCookies();
  • Gem cookieoplysningerne ved hjælp af FileWriter Class til at skrive strømme af tegn og BufferedWriter til at skrive teksten ind i en fil for at oprette i en fil Cookies.data
  • "Cookies.data"-filen gemmer alle cookies-oplysninger sammen med "Navn, Værdi, Domæne, Sti". Vi kan hente disse oplysninger og logge ind på applikationen uden at indtaste loginoplysningerne.
  • Når du kører ovenstående kode, oprettes filen Cookie.data i projektmappestrukturen som vist på skærmen nedenfor. Åbn filen Cookie.data, du kan se loginoplysningerne for AUT er gemt i formatet Cookie, se nedenstående fremhævet skærm

    Håndter cookies ind Selenium

Trin 2) Brug af gemt cookie til at logge ind på applikationen

Nu vil vi få adgang til den cookie, der blev genereret i trin 1 og bruge den genererede cookie til at autentificere vores session i applikationen

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

Output: Du kommer direkte til login-successkærmen uden at indtaste det indtastede bruger-id og password

BEMÆRK VENLIGST: Brug hard refresh, hvis du ser login-siden efter at have udført ovenstående script.

Konklusion

Således kan du undgå at indtaste brugernavn og adgangskode på serveren og validere dem igen og igen for hver test ved hjælp af Selenium Webdriver, og sparer derved en masse tid.