Hogyan kezeljük a cookie-kat Selenium webdriver
A HTTP cookie a felhasználóról és preferenciáiról szóló információkat tartalmaz. Kulcs-érték pár segítségével tárolja az információkat. Ez egy kis adat, amelyet a webalkalmazás küld, és a webböngészőben tárol, miközben a felhasználó az adott webhelyet böngészi.
Kattintson ide a további információkért cookie tesztelés.
Selenium Parancsok lekérdezése cookie-khoz
In Selenium Webdriver, az alábbi beépített módszerrel tudunk cookie-kat lekérdezni és kommunikálni velük:
Selenium Parancsok lekérdezése | teljesítmény |
---|---|
driver.manage().getCookies(); |
Vissza az összes cookie listáját |
driver.manage().getCookieNamed(arg0); |
Adott cookie-t küld vissza a névnek megfelelően |
driver.manage().addCookie(arg0); |
Hozd létre és add hozzá a cookie-t |
driver.manage().deleteCookie(arg0); |
Adott cookie törlése |
driver.manage().deleteCookieNamed(arg0); |
Törölje az adott cookie-t a Név szerint |
driver.manage().deleteAllCookies(); |
Törölje az összes cookie-t |
Miért kell kezelni (elfogadni) a cookie-kat? Selenium?
Minden cookie névhez, értékhez, domainhez, elérési úthoz, lejárathoz és annak állapotához van társítva, hogy biztonságos-e vagy sem. A kliens érvényesítése érdekében a szerver ezeket az értékeket egy cookie-ban elemzi.
Amikor Tesztelés szelén web-illesztőprogramot használó webalkalmazás esetén előfordulhat, hogy cookie-t kell létrehoznia, frissítenie vagy törölnie kell.
Például az online vásárlási alkalmazás automatizálása során sok olyan tesztforgatókönyvet kell automatizálnia, mint a rendelés leadása, a kosár megtekintése, a fizetési információk, a megrendelés visszaigazolása stb.
Ha a cookie-k nincsenek tárolva, akkor minden alkalommal be kell jelentkeznie, mielőtt végrehajtaná a fent felsorolt tesztforgatókönyveket. Ez növeli a kódolási erőfeszítést és a végrehajtási időt.
A megoldás a cookie-k fájlban való tárolása. Later, kérje le a cookie értékeit ebből a fájlból, és adja hozzá az aktuális böngésző munkamenetét. Ennek eredményeként minden esetben kihagyhatja a bejelentkezési lépéseket Teszt eset mert a vezetői munkamenetben ez az információ benne van.
Az alkalmazásszerver mostantól hitelesítettként kezeli a böngésző munkamenetét, és közvetlenül a kért URL-re viszi Önt.
Hogyan kezeljük a cookie-kat Selenium
Használni fogjuk https://demo.guru99.com/test/cookie/selenium_aut.php demó célunkra.
Ez egy 2 lépésből álló folyamat lesz.
Step 1) Jelentkezzen be az alkalmazásba, és tárolja a generált hitelesítő cookie-t.
Step 2) A tárolt cookie-t használta, hogy felhasználói azonosító és jelszó nélkül ismét bejelentkezzen az alkalmazásba.
1. lépés) Cookie-információk tárolása
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(); } } }
Kód magyarázata:
- WebDriver példány létrehozása
- A webhelyet a driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”) használatával látogatjuk meg.
- Jelentkezzen be az Alkalmazásba
- Olvassa el a süti információkat a használatával
driver.manage().getCookies();
- Tárolja a cookie-információkat a FileWriter Class használatával karakterfolyamok írásához és BufferAz edWriter a szöveget fájlba írja, és Cookies.data fájlba hozza létre
- A „Cookies.data” fájl tárolja a cookie-kra vonatkozó összes információt a „Név, Érték, Domain, Elérési út” mellett. Ezeket az információkat lekérhetjük, és a bejelentkezési adatok megadása nélkül bejelentkezhetünk az alkalmazásba.
- A fenti kód futtatása után a Cookie.data fájl létrejön a projekt mappastruktúrájában az alábbi képernyőn látható módon. Nyissa meg a Cookie.data fájlt, láthatja, hogy az AUT bejelentkezési adatai Cookie formátumban vannak elmentve, lásd az alábbi kiemelt képernyőt
2. lépés) Tárolt cookie használata az alkalmazásba való bejelentkezéshez
Most hozzáférünk a 1. lépésben generált cookie-hoz, és a generált cookie-t használjuk a munkamenetünk hitelesítésére az alkalmazásban
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: A bevitt felhasználói azonosító és jelszó megadása nélkül közvetlenül a sikeres bejelentkezési képernyőre kerül
JEGYZET: Használjon kemény frissítést arra az esetre, ha a fenti szkript végrehajtása után megjelenik a bejelentkezési oldal.
Következtetés
Így elkerülheti, hogy a felhasználónév és jelszó megadása a szerveren újra és újra érvényesítse azokat minden tesztnél a Selenium Webdriver, és ezáltal sok időt takarít meg.