En HTTP-cookie består av information om användaren och deras preferenser. Den lagrar information med hjälp av ett nyckel-värdepar. Det är en liten bit data som skickas från webbapplikationen och lagras i webbläsaren, medan användaren surfar på den webbplatsen.
Klicka här för att lära dig mer om testning av kakor.
I den här handledningen lär vi oss -
- Selenfrågekommandon för kakor
- Varför hantera kakor i selen?
- Demo: Cookiehantering i Selen.
- Steg 1) Lagra cookieinformation.
- Steg 2) Använd lagrad cookie för att logga in i applikationen.
Selenfrågekommandon för kakor
I Selenium Webdriver kan vi fråga och interagera med cookies med nedan inbyggd metod:
driver.manage (). getCookies (); // Returnera listan över alla kakordriver.manage (). getCookieNamed (arg0); // Returnera specifik cookie enligt namndriver.manage (). addCookie (arg0); // Skapa och lägg till kakandriver.manage (). deleteCookie (arg0); // Ta bort specifik cookiedriver.manage (). deleteCookieNamed (arg0); // Ta bort specifik cookie enligt namndriver.manage (). deleteAllCookies (); // Ta bort alla cookies
Varför hantera kakor i selen?
Varje cookie är associerad med ett namn, värde, domän, sökväg, utgång och status för om den är säker eller inte. För att validera en klient analyserar en server alla dessa värden i en cookie.
När du testar en webbapplikation med selen-webbdrivrutin kan du behöva skapa, uppdatera eller ta bort en cookie.
Till exempel, när du automatiserar Online Shopping-applikationen, behöver du många automatisera testscenarier som beställning, Visa kundvagn, betalningsinformation, orderbekräftelse etc.
Om cookies inte lagras måste du utföra inloggningsåtgärder varje gång innan du utför ovanstående testscenarier. Detta ökar din kodansträngning och exekveringstid.
Lösningen är att lagra kakor i en fil. Senare, hämta värdena för kakan från den här filen och lägg till den din nuvarande webbläsarsession. Som ett resultat kan du hoppa över inloggningsstegen i varje testfall eftersom din förarsession innehåller den här informationen.
Applikationsservern behandlar nu din webbläsarsession som autentiserad och tar dig direkt till din begärda URL.
Demo: Cookiehantering i Selen.
Vi kommer att använda http://demo.guru99.com/test/cookie/selenium_aut.php för vårt demoändamål.
Detta blir en tvåstegsprocess.
Steg 1) Logga in i applikationen och spara den autentiseringscookie som genereras.
Steg 2) Använd den lagrade kakan för att logga in igen på applikationen utan att använda användar-ID och lösenord.
Steg 1) Lagra cookieinformation.
paket CookieExempel;importera java.io.BufferedWriter;importera java.io.File;importera java.io.FileWriter;importera java.util.Set;importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;importera org.openqa.selenium.Cookie;public class cookieRead {public static void main (String [] args){WebDriver-drivrutin;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");drivrutin = ny ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Ange e-post-ID och lösenord om du redan är registreraddriver.findElement (By.name ("användarnamn")). sendKeys ("abc123");driver.findElement (By.name ("password")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). klicka ();// skapa fil med namnet Cookies för att lagra inloggningsinformationFilfil = ny fil ("Cookies.data");Prova{// Ta bort gammal fil om den finnsfile.delete ();file.createNewFile ();FileWriter fileWrite = ny FileWriter (fil);BufferedWriter Bwrite = ny BufferedWriter (fileWrite);// loop för att få kakinformation// loop för att få kakinformationför (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 ();}fångst (undantag ex){ex.printStackTrace ();}}}
Kodförklaring:
- Skapa WebDriver-instans
- Vi besöker webbplatsen med hjälp av driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
- Logga in på applikationen
- Läs cookie-informationen med
driver.manage (). getCookies ();
- Lagra cookieinformationen med FileWriter Class för att skriva teckenströmmar och BufferedWriter för att skriva texten i en fil för att skapa till en fil Cookies.data
- Filen "Cookies.data" lagrar all information om cookies tillsammans med "Namn, värde, domän, sökväg". Vi kan hämta denna information och logga in i applikationen utan att ange inloggningsuppgifterna.
- När du väl har kommit över koden skapas Cookie.data-filen i projektmappstrukturen som visas på skärmen nedan. Öppna Cookie.data-filen, du kan se inloggningsuppgifter för AUT sparas i formatet Cookie, se nedan markerad skärm
Steg 2) Använd lagrad cookie för att logga in i applikationen.
Nu kommer vi åt den cookie som genererades i steg 1 och använder den cookie som genererats för att autentisera vår session i applikationen
paket CookieExempel;importera java.io.BufferedReader;importera java.io.File;importera java.io.FileReader;importera java.util.Date;importera java.util.StringTokenizer;importera org.openqa.selenium.Cookie;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;offentlig klass CookieWrite{public static void main (String [] args) {WebDriver-drivrutin;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");drivrutin = ny ChromeDriver ();Prova{Filfil = ny fil ("Cookies.data");FileReader fileReader = ny FileReader (fil);BufferedReader Buffreader = ny BufferedReader (fileReader);Sträng strline;medan ((strline = Buffreader.readLine ())! = null) {StringTokenizer token = ny StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Strängnamn = token.nextToken ();Strängvärde = token.nextToken ();Strängdomän = token.nextToken ();Strängväg = token.nextToken ();Datum utgång = null;Strängval;om (! (val = token.nextToken ()). är lika med ("null")){utgång = nytt datum (val);}Boolean isSecure = ny Boolean (token.nextToken ()).booleanValue ();Cookie ck = ny cookie (namn, värde, domän, sökväg, utgång, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Detta lägger till den lagrade kakan i din nuvarande session}}} fångst (undantag ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}
UTGÅNG: Du tas direkt till skärmen för inloggningsframgång utan att ange användar-ID och lösenord
OBS: Använd hård uppdatering om du ser inloggningssidan efter att du har utfört ovanstående skript.
Slutsats
Således kan du undvika att ange användarnamn och lösenord på servern som validerar dem om och om igen för varje test med hjälp av Selenium Webdriver, och sparar därmed mycket tid.
Denna artikel har bidragit av Mangesh Waghmare