Hoe om te gaan met cookies Selenium webdriver

Een HTTP-cookie bestaat uit informatie over de gebruiker en zijn voorkeuren. Het slaat informatie op met behulp van een sleutel-waardepaar. Het is een klein stukje gegevens dat vanuit de webapplicatie wordt verzonden en in de webbrowser wordt opgeslagen, terwijl de gebruiker op die website surft.

Klik hier om meer te ontdekken over koekjes testen.

Selenium Queryopdrachten voor cookies

In Selenium Webdriver, kunnen we cookies opvragen en gebruiken met de onderstaande ingebouwde methode:

Selenium Opdrachten opvragen uitgang
driver.manage().getCookies(); Terug De lijst met alle cookies
driver.manage().getCookieNamed(arg0); Retourneer specifieke cookie op naam
driver.manage().addCookie(arg0); Maak het koekje en voeg het toe
driver.manage().deleteCookie(arg0); Specifieke cookie verwijderen
driver.manage().deleteCookieNamed(arg0); Verwijder specifieke cookie op basis van Naam
driver.manage().deleteAllCookies(); Verwijder alle cookies

Waarom omgaan met (accepteren) cookies? Selenium?

Elke cookie is gekoppeld aan een naam, waarde, domein, pad, vervaldatum en de status of deze veilig is of niet. Om een ​​client te valideren, parseert een server al deze waarden in een cookie.

. Testen een webapplicatie die gebruikmaakt van de Selenium Web Driver, moet u mogelijk een cookie maken, bijwerken of verwijderen.

Wanneer u bijvoorbeeld de online winkelapplicatie automatiseert, moet u vaak testscenario's automatiseren, zoals het plaatsen van een bestelling, het bekijken van het winkelwagentje, de betalingsinformatie, de orderbevestiging, enz.

Als er geen cookies worden opgeslagen, moet u elke keer een inlogactie uitvoeren voordat u de hierboven genoemde testscenario's uitvoert. Dit zal uw codeerinspanningen en uitvoeringstijd vergroten.

De oplossing is om cookies op te slaan in een bestand. Later, haal de waarden van de cookie uit dit bestand op en voeg uw huidige browsersessie eraan toe. Als gevolg hiervan kunt u de inlogstappen in elk overslaan Testgeval omdat uw chauffeurssessie deze informatie bevat.

De applicatieserver beschouwt uw browsersessie nu als geverifieerd en brengt u rechtstreeks naar de door u opgevraagde URL.

Hoe om te gaan met cookies Selenium

We zullen gebruiken https://demo.guru99.com/test/cookie/selenium_aut.php voor ons demodoel.

Dit zal een proces van 2 stappen zijn.

Stap 1) Log in op de applicatie en sla de gegenereerde authenticatiecookie op.

Behandel koekjes in Selenium

Stap 2) Gebruikte de opgeslagen cookie om opnieuw in te loggen op de applicatie zonder gebruikersnaam en wachtwoord te gebruiken.

Stap 1) Cookie-informatie opslaan

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

Code Verklaring:

  • Maak een WebDriver-instantie
  • We bezoeken de website met behulp van de driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
  • Log in op de applicatie
  • Lees de cookie-informatie met behulp van
    driver.manage().getCookies();
  • Sla de cookie-informatie op met behulp van FileWriter Class om stromen van tekens en BufferedWriter om de tekst in een bestand te schrijven om er een bestand Cookies.data van te maken
  • Het bestand “Cookies.data” slaat alle cookie-informatie op, samen met “Naam, Waarde, Domein, Pad”. We kunnen deze informatie ophalen en inloggen op de applicatie zonder de inloggegevens in te voeren.
  • Zodra u bovenstaande code uitvoert, wordt het Cookie.data-bestand aangemaakt in de projectmapstructuur, zoals weergegeven in het onderstaande scherm. Open het Cookie.data-bestand. U kunt zien dat de inloggegevens van de AUT zijn opgeslagen in het formaat Cookie, zie het hieronder gemarkeerde scherm

    Behandel koekjes in Selenium

Stap 2) Opgeslagen cookie gebruiken om in te loggen op de applicatie

Nu hebben we toegang tot de cookie die in stap 1 is gegenereerd en gebruiken we de gegenereerde cookie om onze sessie in de applicatie te authenticeren

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: U wordt rechtstreeks naar het scherm met succes bij het inloggen geleid zonder de ingevoerde gebruikers-ID en het wachtwoord in te voeren

NOTITIE: Gebruik harde vernieuwing als u de inlogpagina ziet na het uitvoeren van het bovenstaande script.

Conclusie

U kunt dus voorkomen dat u de gebruikersnaam en het wachtwoord op de server invoert en deze voor elke test steeds opnieuw valideert met behulp van Selenium Webdriver, en bespaart daardoor veel tijd.