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