Hvordan håndtere informasjonskapsler i Selenium webdriver

En HTTP-informasjonskapsel består av informasjon om brukeren og deres preferanser. Den lagrer informasjon ved hjelp av et nøkkelverdi-par. Det er et lite stykke data som sendes fra nettapplikasjonen og lagres i nettleseren mens brukeren surfer på nettstedet.

Klikk her for å lære mer informasjonskapsel testing.

Selenium Spørringskommandoer for informasjonskapsler

In Selenium Webdriver, kan vi spørre og samhandle med informasjonskapsler med følgende innebygde metode:

Selenium Spørringskommandoer Produksjon
driver.manage().getCookies(); Returner listen over alle informasjonskapsler
driver.manage().getCookieNamed(arg0); Returner spesifikk informasjonskapsel i henhold til navn
driver.manage().addCookie(arg0); Opprett og legg til informasjonskapselen
driver.manage().deleteCookie(arg0); Slett spesifikk informasjonskapsel
driver.manage().deleteCookieNamed(arg0); Slett spesifikk informasjonskapsel i henhold til Navn
driver.manage().deleteAllCookies(); Slett alle informasjonskapsler

Hvorfor håndtere (godta) informasjonskapsler i Selenium?

Hver informasjonskapsel er knyttet til et navn, verdi, domene, bane, utløp og status for om den er sikker eller ikke. For å validere en klient, analyserer en server alle disse verdiene i en informasjonskapsel.

Når Testing en nettapplikasjon som bruker selen nettdriver, kan det hende du må opprette, oppdatere eller slette en informasjonskapsel.

For eksempel, når du automatiserer netthandelsapplikasjonen, trenger du mange å automatisere testscenarier som bestiller, se handlekurv, betalingsinformasjon, ordrebekreftelse osv.

Hvis informasjonskapsler ikke lagres, må du utføre påloggingshandlinger hver gang før du utfører testscenariene ovenfor. Dette vil øke din kodeinnsats og utførelsestid.

Løsningen er å lagre informasjonskapsler i en fil. Later, hent verdiene til informasjonskapsel fra denne filen og legg til din nåværende nettleserøkt. Som et resultat kan du hoppe over påloggingstrinnene i hver Testsak fordi sjåførøkten din har denne informasjonen.

Applikasjonsserveren behandler nå nettleserøkten din som autentisert og tar deg direkte til den forespurte URL-en.

Hvordan håndtere informasjonskapsler i Selenium

Vi vil bruke https://demo.guru99.com/test/cookie/selenium_aut.php for vårt demoformål.

Dette vil være en 2-trinns prosess.

Trinn 1) Logg på applikasjonen og lagre den genererte autentiseringsinformasjonskapselen.

Håndter informasjonskapsler inn Selenium

Trinn 2) Brukte den lagrede informasjonskapselen for å logge på applikasjonen igjen uten å bruke bruker-ID og passord.

Trinn 1) Lagring av informasjonskapselinformasjon

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:

  • Opprett WebDriver-forekomst
  • Vi besøker nettstedet ved å bruke driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
  • Logg inn på applikasjonen
  • Les informasjonskapselinformasjonen ved hjelp av
    driver.manage().getCookies();
  • Lagre informasjonskapselinformasjonen ved hjelp av FileWriter Class for å skrive strømmer av tegn og BufferedWriter for å skrive teksten inn i en fil for å lage til en fil Cookies.data
  • "Cookies.data"-filen lagrer all informasjonskapselinformasjon sammen med "Navn, Verdi, Domene, Path". Vi kan hente denne informasjonen og logge på applikasjonen uten å oppgi påloggingsinformasjonen.
  • Når du kjører koden ovenfor, opprettes filen Cookie.data i prosjektmappestrukturen som vist på skjermen nedenfor. Åpne filen Cookie.data, du kan se påloggingsinformasjonen til AUT er lagret i formatet Cookie, se den uthevede skjermen nedenfor

    Håndter informasjonskapsler inn Selenium

Trinn 2) Bruk av lagret informasjonskapsel for å logge på applikasjonen

Nå vil vi få tilgang til informasjonskapselen generert i trinn 1 og bruke informasjonskapselen som ble generert til å autentisere økten vår i applikasjonen

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

Utgang: Du kommer direkte til suksessskjermen for pålogging uten å oppgi bruker-ID og passord

NOTAT: Bruk hard refresh i tilfelle du ser påloggingssiden etter å ha utført skriptet ovenfor.

konklusjonen

Dermed kan du unngå å skrive inn brukernavn og passord på serveren og validere dem igjen og igjen for hver test ved hjelp av Selenium Webdriver, og sparer dermed mye tid.