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.
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
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.