Hvordan håndtere informasjonskapsler i Selenium webdriver
En HTTP-informasjonskapsel består av informasjon om brukeren og deres preferanser. Den lagrer informasjon ved hjelp av et nøkkelverdi-par. Det er et lite stykke data som sendes fra nettapplikasjonen og lagres i nettleseren mens brukeren surfer på nettstedet.
Klikk her for å lære mer informasjonskapsel testing.
Selenium Spørringskommandoer for informasjonskapsler
In Selenium Webdriver, kan vi spørre og samhandle med informasjonskapsler med følgende innebygde metode:
Selenium Spørringskommandoer | Produksjon |
---|---|
driver.manage().getCookies(); |
Returner listen over alle informasjonskapsler |
driver.manage().getCookieNamed(arg0); |
Returner spesifikk informasjonskapsel i henhold til navn |
driver.manage().addCookie(arg0); |
Opprett og legg til informasjonskapselen |
driver.manage().deleteCookie(arg0); |
Slett spesifikk informasjonskapsel |
driver.manage().deleteCookieNamed(arg0); |
Slett spesifikk informasjonskapsel i henhold til Navn |
driver.manage().deleteAllCookies(); |
Slett alle informasjonskapsler |
Hvorfor håndtere (godta) informasjonskapsler i Selenium?
Hver informasjonskapsel er knyttet til et navn, verdi, domene, bane, utløp og status for om den er sikker eller ikke. For å validere en klient, analyserer en server alle disse verdiene i en informasjonskapsel.
Når Testing en nettapplikasjon som bruker selen nettdriver, kan det hende du må opprette, oppdatere eller slette en informasjonskapsel.
For eksempel, når du automatiserer netthandelsapplikasjonen, trenger du mange å automatisere testscenarier som bestiller, se handlekurv, betalingsinformasjon, ordrebekreftelse osv.
Hvis informasjonskapsler ikke lagres, må du utføre påloggingshandlinger hver gang før du utfører testscenariene ovenfor. Dette vil øke din kodeinnsats og utførelsestid.
Løsningen er å lagre informasjonskapsler i en fil. Later, hent verdiene til informasjonskapsel fra denne filen og legg til din nåværende nettleserøkt. Som et resultat kan du hoppe over påloggingstrinnene i hver Testsak fordi sjåførøkten din har denne informasjonen.
Applikasjonsserveren behandler nå nettleserøkten din som autentisert og tar deg direkte til den forespurte URL-en.
Hvordan håndtere informasjonskapsler i Selenium
Vi vil bruke https://demo.guru99.com/test/cookie/selenium_aut.php for vårt demoformål.
Dette vil være en 2-trinns prosess.
Trinn 1) Logg på applikasjonen og lagre den genererte autentiseringsinformasjonskapselen.
Trinn 2) Brukte den lagrede informasjonskapselen for å logge på applikasjonen igjen uten å bruke bruker-ID og passord.
Trinn 1) Lagring av informasjonskapselinformasjon
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(); } } }
Kodeforklaring:
- Opprett WebDriver-forekomst
- Vi besøker nettstedet ved å bruke driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
- Logg inn på applikasjonen
- Les informasjonskapselinformasjonen ved hjelp av
driver.manage().getCookies();
- Lagre informasjonskapselinformasjonen ved hjelp av FileWriter Class for å skrive strømmer av tegn og BufferedWriter for å skrive teksten inn i en fil for å lage til en fil Cookies.data
- "Cookies.data"-filen lagrer all informasjonskapselinformasjon sammen med "Navn, Verdi, Domene, Path". Vi kan hente denne informasjonen og logge på applikasjonen uten å oppgi påloggingsinformasjonen.
- Når du kjører koden ovenfor, opprettes filen Cookie.data i prosjektmappestrukturen som vist på skjermen nedenfor. Åpne filen Cookie.data, du kan se påloggingsinformasjonen til AUT er lagret i formatet Cookie, se den uthevede skjermen nedenfor
Trinn 2) Bruk av lagret informasjonskapsel for å logge på applikasjonen
Nå vil vi få tilgang til informasjonskapselen generert i trinn 1 og bruke informasjonskapselen som ble generert til å autentisere økten vår i applikasjonen
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"); } }
Utgang: Du kommer direkte til suksessskjermen for pålogging uten å oppgi bruker-ID og passord
NOTAT: Bruk hard refresh i tilfelle du ser påloggingssiden etter å ha utført skriptet ovenfor.
konklusjonen
Dermed kan du unngå å skrive inn brukernavn og passord på serveren og validere dem igjen og igjen for hver test ved hjelp av Selenium Webdriver, og sparer dermed mye tid.