Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Тестирование опции «Запомнить меня»


(Сергей Блохин) #1

Часто форма авторизации имеет опцию «Запомнить меня».
Но т. к., по умолчанию Selenium WebDriver запускает «голый» браузер без профиля, настроек, расширений (плагинов), cookies и прочего, то иногда необходимо проверить корректность работы опции «Запомнить меня».
Мы можем при авторизации проставить галку в нужном checkbox, но при следующем открытии браузер авторизация не сохранится, т. к. не будут подгружены cookie (именно в них в 99% случаях хранится настройка запоминания авторизации).
Попробуем сохранить авторизацию и проверить её работу в Ruby (да, я очень сильно не люблю Python) на сайте http://freelansim.ru.
Для начала нам нужно понять, какая именно cookie отвечает за сохранение авторизации.
Для этого в ручном режиме авторизуемся на сайте без галки «Запомнить меня» и с ней.
Сравниваем cookies обоих случаев и замечаем, что данный сайт хранит настройку в cookie remember_user_token.
А дальше начинается магия.

# encoding: utf-8

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome

# Открывается голый сайт без авторизации
driver.get 'http://freelansim.ru/'

# Подстваляем нужную cookie
driver.manage.add_cookie :name => 'remember_user_token', 
						 :value => 'B__FAKE__AhbB1sGaRKyPUkiIiQyYSQxsMCRYVdWVddEVVTjRzNwMGRhV3VPLy5PBjoGRVQ%3D--07740c0aad85b7e93901698ttbc0f0b09fd276da', 
						 :path => '/', 
						 :secure => false

# Открывается авторизованный сайт
driver.get DATA[:url]

(Дмитрий Жарий) #2

Только, ведь с точки зрения безопасности, имя куки может меняются и придётся править код при каждом запуску тестов. Так что, в зависимости от фреймворка на котором сделано приложение, это может сработать, а может и нет.

На мой взгляд, тут стабильно сможет работать только не закрытие браузера.
Я например, в конце теста (TearDown) , проверяю произошла ли ошибка, и если произошла, то устанавливаю URL на about:blank, вместо закрытия браузера. Бывают и такие ошибки (редко, в моем случае), что повисает драйвер. Лишь тогда браузер приходится закрывать.


(Сергей Блохин) #3

Можно и не менять каждый раз cookie, а сделать их динамическими.
Открываем сайт.
Авторизуемся.
Читаем cookie.
Открываем сайт.
Подставляем cookie.
Обновляем страницу и проверяем, авторизованы мы или нет.
Если имя ключа изменится, тогда да, придётся немного править тест.


(sidelnikovmike) #4

Имя куки если вдруг и меняется где-то - то это происходит очень редко.
@TIT А идея - интересная, надо будет запомнить такой ход.


(Сергей Блохин) #5

Я хотел напомнить, что Selenium умеет работать с Cookies и этим иногда надо пользоваться.
Особенно в тех случаях, когда стоит задача проверить, а корректно ли работают Cookies и сохраняется ли в сессии пользователя то, что должно сохраняться. Первое, что пришло на ум — это как раз опция «Запомнить меня».
Более подробно о работе с Cookies можно прочитать в документации к нужному языку.


(sidelnikovmike) #6

Вот. Это именно то, что @polusok имел в виду под code snippets и заметками автоматизаторов))