Запуск в текущей сессии.( В открытом браузере) Java, webdriver firefox.

Нужно запустить тест в открытом окне браузера, т.е. без потери авторизации на сайте. Пробывал явно указать дефолтный профиль firefox - не пашет. Помимо подмены cookie есть ли способ это реализовать?. [Java, webdriver firefox]

Привет @lessname,

Опишите пожалуйста сценарий (пример работы) которого вы хотите добиться по шагам. Описание вопроса выглядит очень размыто.
Вы хотите присоединиться WebDriver’ом к уже открытому браузеру?

Да именно так, нужно чтобы авторизация на сайте произведенная в этом браузере вручную сохранилась при проведении теста. Знаю что можно сохранять куки и при последующем запуске их записывать обратно, но возможно есть более простой способ?

В Selenium WebDriver такой фичи, как присоединение к уже существующему браузеру – нет, и реализация не планируется. Этот вопрос обсуждался когда-то толи в баг-трекере толи в рассылке selenium-developers.

Единственный «правильный» способ сделать так, чтобы WebDriver мог достучатся до браузера, это запустить браузер при помощи WebDriver.
Этот принцип заложен в моем Page Recorder, который взаимодействует с браузером через WebDriver, при этом позволяет производить любые ручные операции, например, логин в веб-приложение.

А это история о том, как докладчик написал вспомогательное приложение, которое позволяет тестировать приложение в полуавтоматическом режиме. Принцип тот же.

В вашем случае, я бы написал десктопное приложение, которое бы позволяло открывать браузер и запускать тесты по нажатию на кнопку.

Такой инструмент, конечно, не один день писать… поэтому это так, просто идея для раздумий. :smiley:

1 лайк

А почему не запустить, браузер. Ручками не пройти авторизацию - и не продолжить тест? Сильно сомневаюсь, что вы тестируете запуск стороннего бразуера.

эм…сори за глупый вопрос, а почему просто авторизацию не добавить веб-драйвером?

Видимо автор просто хочет сэкономить время на запуске браузера.

Уверяю, это вам придаст лишь дополнительных проблем. Куки на современных сервисах вы не сохраните. Точнее, толку от их сохранения будет мало. Это несекьюрно, посему, разработчики обычно внедряют дополнительные системы защиты.

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

Еще одним интересным моментом является кэш. Который вам тоже придется чистить постоянно.

Вот тут то нам и нужно выяснить истинные мотивы @lessname :wink:

http client - ом сразу авторизацию забацать после старта бразуера и потом уже селениумом кликать

Может быть автору, надо сделать что то руками…пока браузер стоит - например вставить какой то USB-токен.

Хочу поднять тему. Есть долго вполняющийся тест (на часа 4), если он падает, то порой просто нет времени/желания на его выполнение с самого начала, а хочется продолжить его с места падения. Прошло много времени с последнего сообщения, возможно, все же появилась возможность перехватить уже открытую сессию и продолжить работу с ней?

  1. Если тест падает, то сессии с открытым браузером, обычно уже нет, не к чему подключаться.
  2. Разбивайте тест на несколько, связывайте их зависимостями на худой конец (для TestNG например), тогда можно будет запустить хоть с какой-то части.