Учебники

56) Обращение с печеньем

Файл cookie HTTP содержит информацию о пользователе и его предпочтениях. Он хранит информацию, используя пару ключ-значение. Это небольшой фрагмент данных, отправляемых из веб-приложения и хранящихся в веб-браузере, когда пользователь просматривает этот веб-сайт.

Нажмите здесь, чтобы узнать о тестировании файлов cookie .

В этом уроке мы узнаем —

Selenium Query Команды для печенья

В Selenium Webdriver мы можем запрашивать файлы cookie и взаимодействовать с ними с помощью встроенного метода:

driver.manage().getCookies();   // Return The List of all Cookies
driver.manage().getCookieNamed(arg0);  //Return specific cookie according to name
driver.manage().addCookie(arg0);   //Create and add the cookie
driver.manage().deleteCookie(arg0);  // Delete specific cookie
driver.manage().deleteCookieNamed(arg0); // Delete specific cookie according Name
driver.manage().deleteAllCookies();  // Delete all cookies

Зачем обращаться с печеньем в Selenium?

Каждый файл cookie связан с именем, значением, доменом, путем, сроком действия и состоянием того, является ли он безопасным или нет. Для проверки клиента сервер анализирует все эти значения в файле cookie.

При тестировании веб-приложения с использованием веб-драйвера selenium может потребоваться создать, обновить или удалить файл cookie.

Например, при автоматизации приложения для онлайн-покупок вам необходимо автоматизировать тестовые сценарии, такие как оформление заказа, просмотр корзины, информация об оплате, подтверждение заказа и т. Д.

Если файлы cookie не сохраняются, вам нужно будет выполнять действия при входе в систему каждый раз, прежде чем выполнять перечисленные выше тестовые сценарии. Это увеличит ваши усилия по написанию кода и время выполнения.

Решением является сохранение файлов cookie в файле. Позже получите значения cookie из этого файла и добавьте в него текущий сеанс браузера. В результате вы можете пропустить шаги входа в систему в каждом тестовом примере, потому что ваша сессия драйвера содержит эту информацию.

Сервер приложений теперь обрабатывает ваш сеанс браузера как аутентифицированный и напрямую перенаправляет вас на запрошенный URL-адрес.

Демо: Обработка печенья в Selenium.

Мы будем использовать http://demo.guru99.com/test/cookie/selenium_aut.php для нашей демонстрационной цели.

Это будет двухэтапный процесс.

Шаг 1) Войдите в приложение и сохраните сгенерированный куки-файл аутентификации.

Шаг 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("http://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 («http://demo.guru99.com/test/cookie/selenium_aut.php»)
  • Войти в приложение
  • Прочитайте информацию о куки, используя
    driver.manage().getCookies();   						
  • Сохраните информацию о файлах cookie, используя класс FileWriter для записи потоков символов и BufferedWriter для записи текста в файл для создания в файл Cookies.data

Шаг 2) Использование сохраненного куки для входа в приложение.

Теперь мы получим доступ к куки-файлу, сгенерированному на шаге 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("http://demo.guru99.com/test/cookie/selenium_aut.php");					
}	
	}	

ВЫХОД: Вы попадаете прямо на экран успешного входа в систему без ввода введенного идентификатора пользователя и пароля.

ПРИМЕЧАНИЕ. Используйте жесткое обновление, если вы видите страницу входа после выполнения вышеуказанного сценария.

Вывод

Таким образом, вы можете избежать ввода имени пользователя и пароля на сервере, проверяя их снова и снова для каждого теста с помощью Selenium Webdriver, и, таким образом, экономит много времени.

Эта статья предоставлена ​​Мангеш Вагмаре