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();
}
}
- Создаёт объект File с путём к файлу cookie.txt, который находится в папке src/test/resources.
- Открывает файл для записи с помощью FileWriter.
- Перебирает все объекты Cookie из коллекции cookies.
- Для каждого объекта Cookie записывает его имя и значение в файл, разделённые знаком равенства и переносом строки.
- Закрывает FileWriter после завершения работы с ним.
- Обрабатывает возможные исключения IOException, выводя трассировку стека исключения.
Таким образом мы смогли добавить все куки для авторизации Дзена!
Теперь нам можно использовать их в автотесте!
✅Как использовать 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();
}
}
- Создаётся экземпляр класса BufferedReader, который оборачивает FileReader для обеспечения буферизации при чтении из файла.
- В цикле while считывается каждая строка из файла до тех пор, пока не будет достигнут конец файла (null).
- Каждая считанная строка разделяется на части по знаку равенства ("="), и если количество частей равно двум, то извлекаются имя и значение cookie.
- Эти значения используются для создания нового объекта Cookie, который затем добавляется в драйвер через метод addCookie.
Сейчас мы можем уже использовать данные методы.
Set<Cookie> cookies = driver.manage().getCookies(); - мы записываем все cookies в Set и далее методом записи cookie в файл записываем их.
ReadAllCookie("src/test/resources/cookie.txt"); - как раз таки добавляет в наш браузер нужные cookie
Чтобы они применились нам нужно всего лишь обновить страницу!
Весь свой код вы всегда можете клонировать себе по данной ссылке -
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!