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

Инициализация браузера с уже подготовленной сессией пользователя.

selenium
webdriver
java
Теги: #<Tag:0x00007f7b6928b220> #<Tag:0x00007f7b6928b0b8> #<Tag:0x00007f7b6928af28>

(Igor Rubis) #1

Всем привет.

Кейс такой:
Как прекондишны к тесту, я создаю и настраиваю юзеров через веб-сервисы. Далее уже в тесте мне нужно, чтоб юзер залогинился и продолжил, собственно, исполнять тест.
Я хочу попробовать как-то обойти момент логина через UI.

Может кто-то сталкивался, можно ли как-то через куки или еще как-нибудь передать браузеру сессию, открытую сервисами? Чтоб в открывшемся браузере юзер уже был залогинен.


(Alexander Zvonov) #2

Если у вас получается подложить сессию - это прежде всего уязвимость. Приятно конечно тесты позапускать так, но вопрос этики проиходящего остается открытым. лучше заведите багу.


(Mykhailo Poliarush) #3

Тут нужно идти к разработчикам и просить их создать такой #api для нужд тестирования, других способов не знаю, а даже если есть, то правильно @AlexanderZvonov заметил - это уязвимость, а не фича


(Lev Yarushin) #4

Если для вашего приложения достаточно правильных куки - вполне можно, войти нужным пользователем, взять данные из кук и добавлять их во время теста.
Вот тут есть мануал по управлению куками:
http://hiromia.blogspot.ru/2015/07/how-to-perform-cookies-in-selenium.html

Хотя возможно лучше сделать некий метод/класс/и т.п. который будет выполнять процедуру логина, и передавать ему параметры созданного пользователя?
Таким образом тесты станут длиннее всего на одну строку.


(Denis Shameta) #5
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;  

ProfilesIni allProfiles = new ProfilesIni();
  FirefoxProfile profile = allProfiles.getProfile("default");
  driver = new FirefoxDriver(profile);
  driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  • как вариант поднимать браузер со всеми текущими сессиями (если сессия была активна то и в запущенном браузере будет активна)

(Igor Rubis) #6

Спасибо за ответы.
Да, простая подстановка кук у нас не работает и сессия не подкладывается, собственно, хотел узнать, может есть какие-нибудь обходные пути.


(Denis Shameta) #7

Так сперва определите как именно работает ваша сессия, если это не чистые куки то может еще быть задействован local_storage, только после понимания проблемы вы сможете определить верное решение.