Hur man hanterar cookies i Selenium webbdrivrutin
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 cookie testning.
Selenium Frågekommandon för cookies
In Selenium Webdriver, vi kan fråga och interagera med cookies med nedan inbyggda metod:
Selenium Fråga kommandon | Produktion |
---|---|
driver.manage().getCookies(); |
Returnera listan över alla cookies |
driver.manage().getCookieNamed(arg0); |
Returnera specifik cookie enligt namn |
driver.manage().addCookie(arg0); |
Skapa och lägg till kakan |
driver.manage().deleteCookie(arg0); |
Ta bort specifik cookie |
driver.manage().deleteCookieNamed(arg0); |
Ta bort specifik cookie enligt Namn |
driver.manage().deleteAllCookies(); |
Ta bort alla cookies |
Varför hantera (acceptera) cookies i Selenium?
Varje cookie är associerad med ett namn, värde, domän, sökväg, utgångsdatum 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 Testning en webbapplikation som använder selenwebbdrivrutin, kan du behöva skapa, uppdatera eller ta bort en cookie.
Till exempel, när du automatiserar Online Shopping Application, 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 ovan angivna testscenarier. Detta kommer att öka din kodningsansträngning och körningstid.
Lösningen är att lagra cookies i en fil. Later, hämta värdena för cookie från den här filen och lägg till din nuvarande webbläsarsession. Som ett resultat kan du hoppa över inloggningsstegen i varje Testfall eftersom din förarsession har den här informationen.
Applikationsservern behandlar nu din webbläsarsession som autentiserad och tar dig direkt till din begärda URL.
Hur man hanterar cookies i Selenium
Vi kommer använda https://demo.guru99.com/test/cookie/selenium_aut.php för vårt demosyfte.
Detta kommer att vara en process i två steg.
Steg 1) Logga in på applikationen och lagra den genererade autentiseringskakan.
Steg 2) Använde den lagrade kakan för att logga in på applikationen igen utan att använda användar-id och lösenord.
Steg 1) Lagring av cookieinformation
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(); } } }
Kodförklaring:
- Skapa WebDriver-instans
- Vi besöker webbplatsen med hjälp av driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
- Logga in i applikationen
- Läs cookieinformationen med hjälp av
driver.manage().getCookies();
- Lagra cookieinformationen med hjälp av FileWriter Class för att skriva strömmar av tecken och BufferedWriter för att skriva texten i en fil för att skapa i 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 kör ovanstående kod skapas filen Cookie.data i projektmappstrukturen som visas på skärmen nedan. Öppna filen Cookie.data, du kan se inloggningsuppgifterna för AUT sparas i formatet Cookie, se nedan-markerade skärm
Steg 2) Använda lagrad cookie för att logga in i applikationen
Nu kommer vi åt den cookie som genererades i steg 1 och använder den skapade cookien för att autentisera vår 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"); } }
Produktion: Du kommer direkt till inloggningsskärmen utan att ange inmatat användar-id och lösenord
OBS: Använd hårduppdatering om du ser inloggningssidan efter att ha kört skriptet ovan.
Slutsats
På så sätt kan du undvika att skriva in användarnamn och lösenord på servern och validera dem gång på gång för varje test med hjälp av Selenium Webdriver, och sparar därmed mycket tid.