Як працювати з файлами cookie в Selenium веб-драйвер

Файл cookie HTTP містить інформацію про користувача та його налаштування. Він зберігає інформацію за допомогою пари ключ-значення. Це невеликий фрагмент даних, який надсилається з веб-програми та зберігається у веб-браузері, поки користувач переглядає цей веб-сайт.

Натисніть тут, щоб дізнатись про тестування файлів cookie.

Selenium Команди запиту для файлів cookie

In Selenium Webdriver, ми можемо надсилати запити та взаємодіяти з файлами cookie за допомогою вбудованого нижче методу:

Selenium Команди запиту Вихід
driver.manage().getCookies(); Повернути список усіх файлів cookie
driver.manage().getCookieNamed(arg0); Повернути певний файл cookie відповідно до імені
driver.manage().addCookie(arg0); Створіть і додайте файл cookie
driver.manage().deleteCookie(arg0); Видалити певний файл cookie
driver.manage().deleteCookieNamed(arg0); Видалити певний файл cookie відповідно до імені
driver.manage().deleteAllCookies(); Видалити всі файли cookie

Навіщо обробляти (приймати) файли cookie Selenium?

Кожен файл cookie пов’язаний з іменем, значенням, доменом, шляхом, терміном дії та статусом безпечного чи ні. Щоб перевірити клієнта, сервер аналізує всі ці значення в файлі cookie.

Коли Тестування веб-програми, що використовує веб-драйвер selenium, вам може знадобитися створити, оновити або видалити файл cookie.

Наприклад, під час автоматизації програми онлайн-покупок вам потрібно автоматизувати тестові сценарії, такі як розміщення замовлення, перегляд кошика, платіжна інформація, підтвердження замовлення тощо.

Якщо файли cookie не зберігаються, вам потрібно буде щоразу виконувати дію входу, перш ніж виконувати наведені вище сценарії тестування. Це збільшить ваші зусилля та час виконання коду.

Рішення полягає в тому, щоб зберігати файли cookie у файлі. Later, отримати значення файлу cookie з цього файлу та додати до нього ваш поточний сеанс браузера. У результаті ви можете пропустити кроки входу в кожен Тестовий випадок оскільки ваш сеанс водія містить цю інформацію.

Сервер додатків тепер розглядає ваш сеанс браузера як автентифікований і безпосередньо спрямовує вас до запитаної URL-адреси.

Як працювати з файлами cookie в Selenium

Ми будемо використовувати https://demo.guru99.com/test/cookie/selenium_aut.php для нашої демонстрації.

Це буде двоетапний процес.

Крок 1) Увійдіть у програму та збережіть створений файл cookie для автентифікації.

Обробляти файли cookie Selenium

Крок 2) Використовував збережений файл cookie, щоб знову увійти в програму без використання ідентифікатора користувача та пароля.

Крок 1) Зберігання інформації про файли 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();			
        }		
    }		
}

Пояснення коду:

  • Створіть екземпляр WebDriver
  • Ми відвідуємо веб-сайт за допомогою driver.get(“https://demo.guru99.com/test/cookie/selenium_aut.php”)
  • Увійдіть у Додаток
  • Прочитайте інформацію про файли cookie за допомогою
    driver.manage().getCookies();
  • Зберігайте інформацію про файли cookie за допомогою класу FileWriter для запису потоків символів і BufferedWriter для запису тексту у файл для створення у файлі Cookies.data
  • Файл «Cookies.data» зберігає всю інформацію про файли cookie, а також «Ім’я, значення, домен, шлях». Ми можемо отримати цю інформацію та ввійти в програму без введення облікових даних.
  • Після виконання вищезазначеного коду файл Cookie.data створюється в структурі папок проекту, як показано на екрані нижче. Відкрийте файл Cookie.data, ви побачите, що облікові дані для входу в AUT збережено у форматі Cookie, дивіться виділений нижче екран

    Обробляти файли cookie Selenium

Крок 2) Використання збережених файлів cookie для входу в програму

Тепер ми отримаємо доступ до файлу cookie, створеного на кроці 1, і використаємо його для автентифікації нашого сеансу в програмі

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");					
}	
	}	

вихід: Ви перейдете безпосередньо до екрана успішного входу без введення ідентифікатора користувача та пароля

ПРИМІТКА: Використовуйте жорстке оновлення, якщо ви бачите сторінку входу після виконання наведеного вище сценарію.

Висновок

Таким чином, ви можете уникнути введення імені користувача та пароля на сервері, перевіряючи їх знову і знову для кожного тесту за допомогою Selenium Webdriver, і тим самим економить багато часу.