Обработка файлов cookie в Selenium WebDriver

Содержание:

Anonim

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

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

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

  • Команды запроса Selenium для файлов cookie
  • Зачем обрабатывать файлы cookie в селене?
  • Демо: обработка файлов cookie в Selenium.
  • Шаг 1) Сохранение информации cookie.
  • Шаг 2) Использование сохраненного файла cookie для входа в приложение.

Команды запроса Selenium для файлов cookie

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

driver.manage (). getCookies (); // Возвращаем список всех файлов cookiedriver.manage (). getCookieNamed (arg0); // Возвращаем конкретный файл cookie по имениdriver.manage (). addCookie (arg0); // Создаем и добавляем cookiedriver.manage (). deleteCookie (arg0); // Удаляем конкретный файл cookiedriver.manage (). deleteCookieNamed (arg0); // Удаляем определенный файл cookie по имениdriver.manage (). deleteAllCookies (); // Удаляем все куки

Зачем обрабатывать файлы cookie в селене?

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

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

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

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

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

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

Демо: обработка файлов cookie в Selenium.

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

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

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

Шаг 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;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");драйвер = новый ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Введите идентификатор электронной почты и пароль, если вы уже зарегистрированыdriver.findElement (By.name ("имя пользователя")). sendKeys ("abc123");driver.findElement (By.name ("пароль")). sendKeys ("123xyz");driver.findElement (By.name ("отправить")). click ();// создаем файл с именем Cookies для хранения информации для входаФайл файл = новый файл ("Cookies.data");пытаться{// Удаляем старый файл, если он существуетfile.delete ();file.createNewFile ();FileWriter fileWrite = новый FileWriter (файл);BufferedWriter Bwrite = новый BufferedWriter (fileWrite);// цикл для получения информации cookie// цикл для получения информации cookieдля (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 ();}улов (исключение ex){например printStackTrace ();}}}

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

  • Создать экземпляр WebDriver
  • Мы посещаем сайт с помощью driver.get ("http://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, см. Экран, выделенный ниже.

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

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

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;открытый класс CookieWrite{public static void main (String [] args) {Драйвер WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");драйвер = новый ChromeDriver ();пытаться{Файл файл = новый файл ("Cookies.data");FileReader fileReader = новый FileReader (файл);BufferedReader Buffreader = новый BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {Токен StringTokenizer = новый StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Имя строки = token.nextToken ();Строковое значение = token.nextToken ();Строковый домен = token.nextToken ();Строка path = token.nextToken ();Дата истечения срока действия = null;String val;если (! (val = token.nextToken ()). equals ("null")){expiry = новая дата (val);}Логическое значение isSecure = новое логическое значение (token.nextToken ()).booleanValue ();Cookie ck = new Cookie (имя, значение, домен, путь, срок действия, isSecure);System.out.println (СК);driver.manage (). addCookie (ck); // Это добавит сохраненный файл cookie в ваш текущий сеанс}}} catch (Exception ex) {например printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}

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

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

Вывод

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

Эта статья предоставлена ​​Mangesh Waghmare