Файл cookie HTTP содержит информацию о пользователе и его предпочтениях. Он хранит информацию, используя пару ключ-значение. Это небольшой фрагмент данных, отправляемых из веб-приложения и хранящихся в веб-браузере, когда пользователь просматривает этот веб-сайт.
Нажмите здесь, чтобы узнать о тестировании файлов cookie .
В этом уроке мы узнаем —
- Selenium Query Команды для печенья
- Зачем обращаться с печеньем в Selenium?
- Демо: Обработка печенья в Selenium.
- Шаг 1) Хранение файлов cookie.
- Шаг 2) Использование сохраненного куки для входа в приложение.
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
- Файл «Cookies.data» хранит всю информацию о файлах cookie вместе с «Имя, Значение, Домен, Путь». Мы можем получить эту информацию и войти в приложение, не вводя учетные данные для входа.
- После запуска кода выше файл Cookie.data создается в структуре папок проекта, как показано на экране ниже. Откройте файл Cookie.data, и вы увидите, что учетные данные AUT сохранены в формате Cookie, см. Выделенный ниже экран
Шаг 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, и, таким образом, экономит много времени.
Эта статья предоставлена Мангеш Вагмаре
