Penanganan Cookies di Selenium WebDriver

Daftar Isi:

Anonim

Cookie HTTP terdiri dari informasi tentang pengguna dan preferensinya. Ini menyimpan informasi menggunakan pasangan nilai kunci. Ini adalah bagian kecil data yang dikirim dari Aplikasi Web dan disimpan di Browser Web, saat pengguna menjelajahi situs web tersebut.

Klik di sini untuk mempelajari tentang pengujian cookie.

Dalam tutorial ini, kita akan belajar -

  • Perintah Selenium Query untuk cookie
  • Mengapa Menangani Cookies di Selenium?
  • Demo: Penanganan cookie di Selenium.
  • Langkah 1) Menyimpan informasi cookie.
  • Langkah 2) Menggunakan cookie yang disimpan untuk masuk ke aplikasi.

Perintah Selenium Query untuk cookie

Di Selenium Webdriver, kita dapat meminta dan berinteraksi dengan cookie dengan metode bawaan di bawah ini:

driver.manage (). getCookies (); // Kembalikan Daftar semua Cookiesdriver.manage (). getCookieNamed (arg0); // Kembalikan cookie tertentu sesuai dengan namanyadriver.manage (). addCookie (arg0); // Buat dan tambahkan cookiedriver.manage (). deleteCookie (arg0); // Hapus cookie tertentudriver.manage (). deleteCookieNamed (arg0); // Hapus cookie tertentu sesuai Namadriver.manage (). deleteAllCookies (); // Hapus semua cookie

Mengapa Menangani Cookies di Selenium?

Setiap cookie dikaitkan dengan nama, nilai, domain, jalur, kadaluwarsa, dan status apakah itu aman atau tidak. Untuk memvalidasi klien, server mengurai semua nilai ini dalam cookie.

Saat Menguji aplikasi web 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 memesan, Lihat Keranjang, Informasi Pembayaran, konfirmasi pesanan, dll.

Jika cookie tidak disimpan, Anda perlu melakukan tindakan login setiap kali sebelum Anda menjalankan skenario pengujian yang tercantum di atas. Ini akan meningkatkan upaya pengkodean dan waktu eksekusi Anda.

Solusinya adalah dengan menyimpan cookie dalam sebuah File. Nanti, ambil nilai cookie dari file ini dan tambahkan ke sesi browser Anda saat ini. Akibatnya, Anda dapat melewati langkah-langkah login di setiap Test Case karena sesi driver Anda memiliki informasi ini di dalamnya.

Server aplikasi sekarang memperlakukan sesi browser Anda sebagai terautentikasi dan langsung membawa Anda ke URL yang Anda minta.

Demo: Penanganan cookie di Selenium.

Kami akan menggunakan http://demo.guru99.com/test/cookie/selenium_aut.php untuk tujuan demo kami.

Ini akan menjadi proses 2 langkah.

Langkah 1) Masuk ke dalam aplikasi dan simpan cookie otentikasi yang dibuat.

Langkah 2) Gunakan cookie yang disimpan, untuk login kembali ke aplikasi tanpa menggunakan userid dan password.

Langkah 1) Menyimpan informasi cookie.

paket CookieExample;import java.io.BufferedWriter;impor java.io.File;import java.io.FileWriter;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.chrome.ChromeDriver;impor org.openqa.selenium.Cookie;public class cookieRead {public static void main (String [] args){Driver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");driver = new ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Masukkan Id Email dan Kata Sandi Jika Anda sudah Mendaftardriver.findElement (By.name ("username")). sendKeys ("abc123");driver.findElement (By.name ("password")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). click ();// buat file bernama Cookies untuk menyimpan Informasi LoginFile file = File baru ("Cookies.data");mencoba{// Hapus file lama jika adafile.delete ();file.createNewFile ();FileWriter fileWrite = FileWriter baru (file);BufferedWriter Bwrite = BufferedWriter baru (fileWrite);// loop untuk mendapatkan informasi cookie// loop untuk mendapatkan informasi cookieuntuk (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 ("http://demo.guru99.com/test/cookie/selenium_aut.php")
  • Masuk ke dalam Aplikasi
  • Baca informasi cookie menggunakan
    driver.manage (). getCookies (); 
  • Simpan informasi cookie menggunakan FileWriter Class untuk menulis aliran karakter dan BufferedWriter untuk menulis teks ke dalam file untuk dibuat menjadi 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 masuk.
  • 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 ini

Langkah 2) Menggunakan cookie yang disimpan untuk masuk ke aplikasi.

Sekarang, kita akan mengakses cookie yang dihasilkan pada langkah 1 dan menggunakan cookie yang dihasilkan untuk mengotentikasi sesi kita di aplikasi

paket CookieExample;import java.io.BufferedReader;impor java.io.File;import java.io.FileReader;import java.util.Date;impor java.util.StringTokenizer;impor org.openqa.selenium.Cookie;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.chrome.ChromeDriver;kelas publik CookieWrite{public static void main (String [] args) {Driver WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");driver = new ChromeDriver ();mencoba{File file = File baru ("Cookies.data");FileReader fileReader = FileReader baru (file);BufferedReader Buffreader = BufferedReader baru (fileReader);String strline;sementara ((strline = Buffreader.readLine ())! = null) {Token StringTokenizer = StringTokenizer baru (strline, ";");while (token.hasMoreTokens ()) {Nama string = token.nextToken ();Nilai string = token.nextToken ();String domain = token.nextToken ();Jalur string = token.nextToken ();Tanggal kadaluwarsa = null;String val;if (! (val = token.nextToken ()). sama dengan ("null")){kadaluwarsa = Tanggal baru (val);}Boolean isSecure = Boolean baru (token.nextToken ()).booleanValue ();Cookie ck = Cookie baru (nama, nilai, domain, jalur, kedaluwarsa, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Ini akan menambahkan cookie yang disimpan ke sesi Anda saat ini}}} catch (Exception ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}

OUTPUT: Anda dibawa langsung ke layar sukses login tanpa memasukkan id pengguna dan kata sandi

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 untuk memvalidasi mereka berulang kali untuk setiap pengujian dengan bantuan Selenium Webdriver, dan dengan demikian menghemat banyak waktu.

Artikel ini dikontribusikan oleh Mangesh Waghmare