Umgang mit Cookies im Selenium WebDriver

Ein HTTP-Cookie besteht aus Informationen über den Benutzer und seine Präferenzen. Es speichert Informationen mithilfe eines Schlüssel-Wert-Paares. Dabei handelt es sich um kleine Daten, die von der Webanwendung gesendet und im Webbrowser gespeichert werden, während der Benutzer auf dieser Website surft.

Klicken Sie hier, um mehr zu erfahren Cookie-Tests.

Selenium-Abfragebefehle für Cookies

In Selenium Webdriver können wir Cookies mit der folgenden integrierten Methode abfragen und mit ihnen interagieren:

Selenium-Abfragebefehle Output
driver.manage().getCookies(); Gibt die Liste aller Cookies zurück
driver.manage().getCookieNamed(arg0); Spezifisches Cookie entsprechend dem Namen zurückgeben
driver.manage().addCookie(arg0); Erstellen Sie das Cookie und fügen Sie es hinzu
driver.manage().deleteCookie(arg0); Bestimmtes Cookie löschen
driver.manage().deleteCookieNamed(arg0); Bestimmtes Cookie entsprechend dem Namen löschen
driver.manage().deleteAllCookies(); Alle Cookies löschen

Warum Cookies in Selenium verarbeiten (akzeptieren)?

Jedes Cookie ist mit einem Namen, einem Wert, einer Domäne, einem Pfad, einem Ablaufdatum und dem Status, ob es sicher ist oder nicht, verknüpft. Um einen Client zu validieren, analysiert ein Server alle diese Werte in einem Cookie.

Wann Testen Wenn Sie eine Webanwendung verwenden, die den Selenium-Webtreiber verwendet, müssen Sie möglicherweise ein Cookie erstellen, aktualisieren oder löschen.

Wenn Sie beispielsweise Online-Shopping-Anwendungen automatisieren, müssen Sie häufig Testszenarien wie Bestellung aufgeben, Warenkorb anzeigen, Zahlungsinformationen, Bestellbestätigung usw. automatisieren.

Wenn keine Cookies gespeichert werden, müssen Sie jedes Mal eine Anmeldeaktion durchführen, bevor Sie die oben aufgeführten Testszenarien ausführen. Dies erhöht Ihren Codierungsaufwand und die Ausführungszeit.

Die Lösung besteht darin, Cookies in einer Datei zu speichern. LaterRufen Sie die Cookie-Werte aus dieser Datei ab und fügen Sie sie Ihrer aktuellen Browsersitzung hinzu. Daher können Sie die Anmeldeschritte in jedem Fall überspringen Testfall weil Ihre Fahrersitzung diese Informationen enthält.

Der Anwendungsserver behandelt Ihre Browsersitzung nun als authentifiziert und leitet Sie direkt zu Ihrer angeforderten URL weiter.

Umgang mit Cookies in Selenium

Wir werden verwenden https://demo.guru99.com/test/cookie/selenium_aut.php für unseren Demozweck.

Dies wird ein 2-stufiger Prozess sein.

Schritt 1) Melden Sie sich bei der Anwendung an und speichern Sie das generierte Authentifizierungs-Cookie.

Behandeln Sie Cookies in Selen

Schritt 2) Verwendet das gespeicherte Cookie, um sich erneut bei der Anwendung anzumelden, ohne Benutzer-ID und Passwort zu verwenden.

Schritt 1) ​​Speichern von Cookie-Informationen

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-Erklärung:

  • Erstellen Sie eine WebDriver-Instanz
  • Wir besuchen die Website mit dem Treiber.get („https://demo.guru99.com/test/cookie/selenium_aut.php“)
  • Melden Sie sich bei der Anwendung an
  • Lesen Sie die Cookie-Informationen mit
    driver.manage().getCookies();
  • Speichern Sie die Cookie-Informationen mithilfe der FileWriter-Klasse, um Zeichenströme zu schreiben und BufferedWriter schreibt den Text in eine Datei und erstellt eine Datei namens „Cookies.data“.
  • In der Datei „Cookies.data“ werden alle Cookie-Informationen zusammen mit „Name, Wert, Domäne, Pfad“ gespeichert. Wir können diese Informationen abrufen und uns bei der Anwendung anmelden, ohne die Anmeldeinformationen einzugeben.
  • Sobald Sie den obigen Code ausführen, wird die Datei Cookie.data in der Projektordnerstruktur erstellt, wie im folgenden Bildschirm gezeigt. Öffnen Sie die Datei Cookie.data. Sie können sehen, dass die Anmeldedaten des AUT im Cookie-Format gespeichert sind (siehe unten hervorgehobener Bildschirm).

    Behandeln Sie Cookies in Selen

Schritt 2) Verwenden Sie gespeicherte Cookies, um sich bei der Anwendung anzumelden

Jetzt greifen wir auf das in Schritt 1 generierte Cookie zu und verwenden das generierte Cookie zur Authentifizierung unserer Sitzung in der Anwendung

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

Ausgang: Sie gelangen direkt zum Anmeldeerfolgsbildschirm, ohne die eingegebene Benutzer-ID und das Passwort einzugeben

Anmerkungen: Verwenden Sie die harte Aktualisierung, falls Sie nach der Ausführung des obigen Skripts die Anmeldeseite sehen.

Konklusion

So können Sie sich die erneute Eingabe von Benutzernamen und Passwort auf dem Server mit Hilfe des Selenium Webdriver ersparen und bei jedem Test erneut validieren und sparen so viel Zeit.