Cara Menangani Cookies di Selenium webdriver
Cookie HTTP terdiri dari informasi tentang pengguna dan preferensi mereka. Ini menyimpan informasi menggunakan pasangan nilai kunci. Ini adalah sepotong kecil data yang dikirim dari Aplikasi Web dan disimpan di Browser Web, saat pengguna menjelajahi situs web tersebut.
Klik di sini untuk mempelajari pengujian kue.
Selenium Perintah Kueri untuk cookie
In Selenium Webdriver, kita dapat menanyakan dan berinteraksi dengan cookie dengan metode bawaan di bawah ini:
Selenium Perintah Permintaan | Keluaran |
---|---|
driver.manage().getCookies(); |
Kembalikan Daftar semua Cookie |
driver.manage().getCookieNamed(arg0); |
Kembalikan cookie tertentu sesuai dengan namanya |
driver.manage().addCookie(arg0); |
Buat dan tambahkan cookie |
driver.manage().deleteCookie(arg0); |
Hapus cookie tertentu |
driver.manage().deleteCookieNamed(arg0); |
Hapus cookie tertentu berdasarkan Nama |
driver.manage().deleteAllCookies(); |
Hapus semua cookie |
Mengapa Menangani (Menerima) Cookies di Selenium?
Setiap cookie dikaitkan dengan nama, nilai, domain, jalur, kedaluwarsa, dan status aman atau tidak. Untuk memvalidasi klien, server mem-parsing semua nilai ini dalam cookie.
Ketika pengujian aplikasi web yang menggunakan driver web selenium, Anda mungkin perlu membuat, memperbarui, atau menghapus cookie.
Misalnya, saat mengotomatiskan Aplikasi Belanja Online, Anda banyak yang perlu mengotomatiskan skenario pengujian seperti pemesanan tempat, Lihat Keranjang, Informasi Pembayaran, konfirmasi pesanan, dll.
Jika cookie tidak disimpan, Anda perlu melakukan tindakan login setiap kali sebelum menjalankan skenario pengujian yang tercantum di atas. Ini akan meningkatkan upaya pengkodean dan waktu eksekusi Anda.
Solusinya adalah dengan menyimpan cookies dalam sebuah File. Later, ambil nilai cookie dari file ini dan tambahkan ke dalamnya sesi browser Anda saat ini. Akibatnya, Anda dapat melewati semua langkah login Uji Kasus karena sesi pengemudi Anda memiliki informasi ini di dalamnya.
Server aplikasi sekarang memperlakukan sesi browser Anda sebagai diautentikasi dan langsung membawa Anda ke URL yang diminta.
Cara Menangani Cookies di Selenium
Kami akan gunakan https://demo.guru99.com/test/cookie/selenium_aut.php untuk tujuan demo kami.
Ini akan menjadi proses 2 langkah.
Langkah 1) Masuk ke aplikasi dan simpan cookie otentikasi yang dihasilkan.
Langkah 2) Menggunakan cookie yang disimpan, untuk login kembali ke aplikasi tanpa menggunakan userid dan password.
Langkah 1) Menyimpan informasi cookie
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(); } } }
Penjelasan Kode:
- Buat instance WebDriver
- Kami mengunjungi situs web menggunakan driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
- Masuk ke Aplikasi
- Baca informasi cookie menggunakan
driver.manage().getCookies();
- Simpan informasi cookie menggunakan Kelas FileWriter untuk menulis aliran karakter dan BufferedWriter untuk menulis teks ke dalam file untuk membuat file Cookies.data
- File “Cookies.data” menyimpan semua informasi cookie bersama dengan “Nama, Nilai, Domain, Jalur”. Kami dapat mengambil informasi ini dan masuk ke aplikasi tanpa memasukkan kredensial login.
- Setelah Anda menjalankan kode di atas, file Cookie.data dibuat ke dalam struktur folder proyek seperti yang ditunjukkan pada layar di bawah ini. Buka file Cookie.data, Anda dapat melihat kredensial login AUT disimpan dalam format Cookie, lihat layar yang disorot di bawah
Langkah 2) Menggunakan cookie yang disimpan untuk login ke aplikasi
Sekarang, kita akan mengakses cookie yang dihasilkan pada langkah 1 dan menggunakan cookie yang dihasilkan untuk mengautentikasi sesi kita dalam aplikasi
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"); } }
Keluaran: Anda langsung dibawa ke layar sukses login tanpa memasukkan input user id dan password
CATATAN: Gunakan hard refresh jika Anda melihat halaman login setelah menjalankan skrip di atas.
Kesimpulan
Dengan demikian, Anda dapat menghindari memasukkan nama pengguna dan kata sandi di server yang memvalidasinya berulang kali untuk setiap pengujian dengan bantuan Selenium Webdriver, dan dengan demikian menghemat banyak waktu.