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.

Tangani Cookies di Selenium

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

    Tangani Cookies di Selenium

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.