Cum să gestionați cookie-urile în Selenium webdriver
Un cookie HTTP este format din informații despre utilizator și preferințele acestuia. Stochează informații folosind o pereche cheie-valoare. Este o mică bucată de date trimisă de la aplicația web și stocată în browser web, în timp ce utilizatorul navighează pe acel site web.
Faceți clic aici pentru a afla mai multe despre testarea cookie-urilor.
Selenium Comenzi de interogare pentru cookie-uri
In Selenium Webdriver, putem interoga și interacționa cu cookie-urile cu metoda încorporată de mai jos:
Selenium Comenzi de interogare | producție |
---|---|
driver.manage().getCookies(); |
Întoarceți Lista tuturor cookie-urilor |
driver.manage().getCookieNamed(arg0); |
Returnează un cookie specific în funcție de nume |
driver.manage().addCookie(arg0); |
Creați și adăugați cookie-ul |
driver.manage().deleteCookie(arg0); |
Ștergeți un anumit cookie |
driver.manage().deleteCookieNamed(arg0); |
Ștergeți un anumit cookie în funcție de Nume |
driver.manage().deleteAllCookies(); |
Ștergeți toate cookie-urile |
De ce să gestionați (acceptați) cookie-urile în Selenium?
Fiecare cookie este asociat cu un nume, valoare, domeniu, cale, expirare și starea dacă este sigur sau nu. Pentru a valida un client, un server analizează toate aceste valori într-un cookie.
Cand Testarea o aplicație web care utilizează driverul web selenium, poate fi necesar să creați, să actualizați sau să ștergeți un cookie.
De exemplu, atunci când automatizați aplicația de cumpărături online, mulți trebuie să automatizați scenariile de testare, cum ar fi plasarea comenzii, vizualizarea coșului, informațiile de plată, confirmarea comenzii etc.
Dacă cookie-urile nu sunt stocate, va trebui să efectuați o acțiune de conectare de fiecare dată înainte de a executa scenariile de testare enumerate mai sus. Acest lucru vă va crește efortul de codare și timpul de execuție.
Soluția este stocarea cookie-urilor într-un fișier. Later, preluați valorile cookie-urilor din acest fișier și adăugați la acesta sesiunea curentă de browser. Ca rezultat, puteți sări peste pașii de conectare în fiecare Caz de testare deoarece sesiunea de șofer conține aceste informații.
Serverul de aplicații tratează acum sesiunea dvs. de browser ca fiind autentificată și vă duce direct la adresa URL solicitată.
Cum să gestionați cookie-urile în Selenium
Noi vom folosi https://demo.guru99.com/test/cookie/selenium_aut.php pentru scopul nostru demonstrativ.
Acesta va fi un proces în 2 pași.
Pas 1) Conectați-vă la aplicație și stocați cookie-ul de autentificare generat.
Pas 2) Am folosit cookie-ul stocat, pentru a vă conecta din nou la aplicație fără a utiliza userid și parola.
Pasul 1) Stocarea informațiilor despre cookie-uri
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(); } } }
Explicația codului:
- Creați o instanță WebDriver
- Vizităm site-ul web folosind driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
- Conectați-vă în aplicație
- Citiți informațiile despre cookie folosind
driver.manage().getCookies();
- Stocați informațiile cookie folosind FileWriter Class pentru a scrie fluxuri de caractere și BufferedWriter pentru a scrie textul într-un fișier pentru a crea într-un fișier Cookies.data
- Fișierul „Cookies.data” stochează toate informațiile cookie împreună cu „Nume, valoare, domeniu, cale”. Putem prelua aceste informații și ne putem autentifica în aplicație fără a introduce datele de conectare.
- Odată ce rulați deasupra codului, fișierul Cookie.data este creat în structura folderului proiectului, așa cum se arată în ecranul de mai jos. Deschideți fișierul Cookie.data, puteți vedea că acreditările de conectare ale AUT sunt salvate în formatul Cookie, vedeți ecranul evidențiat mai jos
Pasul 2) Utilizarea cookie-urilor stocate pentru a vă autentifica în aplicație
Acum, vom accesa cookie-ul generat la pasul 1 și vom folosi cookie-ul generat pentru a ne autentifica sesiunea în aplicație
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"); } }
ieșire: Sunteți dus direct la ecranul de conectare cu succes fără a introduce ID-ul de utilizator și parola introduse
NOTĂ: Utilizați reîmprospătarea tare în cazul în care vedeți pagina de autentificare după executarea scriptului de mai sus.
Concluzie
Astfel, puteți evita introducerea numelui de utilizator și a parolei pe server validându-le din nou și din nou pentru fiecare test cu ajutorul Selenium Webdriver și, prin urmare, economisește mult timp.