Как автоматизировать авторизацию: UI-логин vs токен/куки/localStorage?
1️⃣ Как кратко ответить
Автоматизация авторизации может быть выполнена через UI-логин, где тесты имитируют действия пользователя, или через токены/куки/localStorage, где тесты используют API для получения токенов и устанавливают их в заголовки запросов или сохраняют в localStorage/куки. Выбор метода зависит от целей тестирования: UI-логин подходит для проверки пользовательского интерфейса, а токены/куки/localStorage — для более быстрых и стабильных API-тестов.
2️⃣ Подробное объяснение темы
Автоматизация авторизации — это важный аспект тестирования веб-приложений, который позволяет тестам выполнять действия от имени пользователя. Существует два основных подхода: через пользовательский интерфейс (UI-логин) и через токены/куки/localStorage.
UI-логин
UI-логин подразумевает автоматизацию процесса входа в систему через пользовательский интерфейс. Это включает в себя:
- Открытие страницы входа.
- Ввод имени пользователя и пароля.
- Нажатие кнопки "Войти".
Этот метод полезен для тестирования пользовательского интерфейса и проверки, что процесс входа работает как ожидается. Однако он может быть медленным и подвержен сбоям из-за изменений в UI.
Пример на Selenium WebDriver:
WebDriver driver = new ChromeDriver();
driver.get("https://example.com/login");
// Находим поле ввода для имени пользователя и вводим значение
WebElement usernameField = driver.findElement(By.id("username"));
usernameField.sendKeys("testuser");
// Находим поле ввода для пароля и вводим значение
WebElement passwordField = driver.findElement(By.id("password"));
passwordField.sendKeys("password123");
// Находим кнопку входа и кликаем по ней
WebElement loginButton = driver.findElement(By.id("loginButton"));
loginButton.click();
Токены/Куки/LocalStorage
Этот метод включает использование API для получения токена доступа, который затем используется для аутентификации в тестах. Токены могут быть сохранены в заголовках HTTP-запросов, куки или localStorage.
- Токены: Получение токена через API и использование его в заголовках запросов. Это позволяет избежать взаимодействия с UI и ускоряет тесты.
- Куки: Установка куки с токеном аутентификации в браузере, что позволяет тестам выполнять действия от имени пользователя.
- LocalStorage: Сохранение токена в localStorage браузера, что также позволяет тестам выполнять действия от имени пользователя.
Пример на JavaScript с использованием fetch для получения токена:
// Функция для получения токена через API
async function getToken() {
const response = await fetch('https://example.com/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: 'testuser',
password: 'password123'
})
});
const data = await response.json();
return data.token; // Возвращаем токен из ответа
}
// Использование токена в заголовках запросов
async function performAuthenticatedRequest() {
const token = await getToken();
const response = await fetch('https://example.com/api/protected', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}` // Устанавливаем токен в заголовок
}
});
const data = await response.json();
console.log(data); // Обрабатываем ответ
}
Выбор между UI-логином и токенами/куки/localStorage зависит от целей тестирования. UI-логин подходит для проверки пользовательского интерфейса, в то время как токены/куки/localStorage обеспечивают более быстрые и стабильные тесты, особенно для API.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться