Как обращаться с файлами 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 в 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, и тем самым экономит много времени.