Найти тему

Как сохранить все Cookies в файл и использовать в Intellij IDEA JAVA?

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

Cookie помогают сайту запомнить вас и предоставить персонализированный опыт. Например, вы можете войти в свой аккаунт без необходимости каждый раз вводить логин и пароль.

Как для автоматизатора важно уметь с ними взаимодействовать, просто добавив куки ви можете избавить себя от авторизации!

✅Как записать все Cookies в файл?

  • Для начала вам нужно перейти на любой сайт и авторизоваться. Прописывать шаги нет смысла, ведь авторизация на многих сервисах отличается. Вот пример как можно авторизоваться в Дзене
WaitElement(By.xpath("//input[@placeholder='Логин или email']"));
Thread.sleep(1500);
inputWord(driver.findElement(By.xpath("//input[@placeholder='Логин или email']")), "Ваш логин");
ClickElement(By.xpath("//button[@data-t='button:action:passp:sign-in']"));
WaitElement(By.xpath("//input[@placeholder='Введите пароль']"));
inputWord(driver.findElement(By.xpath("//input[@placeholder='Введите пароль']")), "Ваш Пароль");

ClickElement(By.xpath("//button[@data-t='button:action:passp:sign-in']"));

Если вы не знакомы с данными методами, советую сначала изучить предыдущие статьи!

  • После того как мы авторизовались, мы можем взять и сохранить наши Cookies. Создадим сразу метод
@Step("Записать все cookie в файл")
public void WriteAllCookie (Set<Cookie> cookies) {

File cookieFile = new File("src/test/resources/cookie.txt");

try(FileWriter writer = new FileWriter(cookieFile)) {
for (Cookie cookie : cookies) {
writer.write(cookie.getName() + "=" + cookie.getValue() + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
  1. Создаёт объект File с путём к файлу cookie.txt, который находится в папке src/test/resources.
  2. Открывает файл для записи с помощью FileWriter.
  3. Перебирает все объекты Cookie из коллекции cookies.
  4. Для каждого объекта Cookie записывает его имя и значение в файл, разделённые знаком равенства и переносом строки.
  5. Закрывает FileWriter после завершения работы с ним.
  6. Обрабатывает возможные исключения IOException, выводя трассировку стека исключения.

Таким образом мы смогли добавить все куки для авторизации Дзена!

-2

Теперь нам можно использовать их в автотесте!

✅Как использовать Cookies из файла?

Давайте сразу же создадим метод, который будет читать наш файл и добавлять все куки.

@Step("Использовать все cookie из файла")
public void ReadAllCookie (String file) {
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split("=");
if (parts.length == 2) {
String name = parts[0];
String value = parts[1];
driver.manage().addCookie(new Cookie(name, value));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
  1. Создаётся экземпляр класса BufferedReader, который оборачивает FileReader для обеспечения буферизации при чтении из файла.
  2. В цикле while считывается каждая строка из файла до тех пор, пока не будет достигнут конец файла (null).
  3. Каждая считанная строка разделяется на части по знаку равенства ("="), и если количество частей равно двум, то извлекаются имя и значение cookie.
  4. Эти значения используются для создания нового объекта Cookie, который затем добавляется в драйвер через метод addCookie.

Сейчас мы можем уже использовать данные методы.

-3

Set<Cookie> cookies = driver.manage().getCookies(); - мы записываем все cookies в Set и далее методом записи cookie в файл записываем их.

ReadAllCookie("src/test/resources/cookie.txt"); - как раз таки добавляет в наш браузер нужные cookie

Чтобы они применились нам нужно всего лишь обновить страницу!

Весь свой код вы всегда можете клонировать себе по данной ссылке -

GitHub - Timurchik57/JAVA

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию