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

WebDriver. перевод авторизации на post HttpClient


(Анна Григорьева) #1

Подскажите пожалуйста, как можно решить проблему…
Делаю авторизацию используя httpclient, получаемые куки класса org.apache.http.impl.cookie.BasicClientCookie
а driver.manager().addCookie(cookie); требует org.openqa.selenium.Cookie

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


(ex3me0) #2

Делать авторизацию самим селениумом?
Искренне Ваш, КО.


(asolntsev) #3

Пример кода можно подсмотреть здесь (метод mimicCookieState): https://github.com/codeborne/selenide/blob/master/src/main/java/com/codeborne/selenide/impl/FileDownloader.java


(Анна Григорьева) #4

проблема в том, что нужно наоборот
org.apache.http.impl.cookie.BasicClientCookie --> org.openqa.selenium.Cookie


(asolntsev) #5

Ну так совершенно аналогично можно и наоборот сделать.
Хотя теперь я уже запутался, зачем это нужно.


(Roman Ponomarenko) #6

for (Cookie c : HTTPClient.getCookieStore().getCookies()) {
org.openqa.selenium.Cookie cookie =
new org.openqa.selenium.Cookie(c.getName(), c.getValue(), c.getDomain(), c.getPath(),
c.getExpiryDate());
Driver.get().manage().addCookie(cookie);
}


(Александр Таранков) #7

Напиши какую проблему изначально ты хочешь решить? Насколько она реальна, а не выдумана? В реальной работе приложения каким образом эта схема (которую ты пытаешься эмулировать, авторизуясь в одном клиенте, а работая в другом) будет использоваться?


(Анна Григорьева) #8

ситуация в следующем: для того чтобы тесты работали быстрее, убрать авторизацию через форму (чтобы не ждать загрузку элементов, заполнение формы и тд)
сделала авторизацию через HttpClient, куки передала драйверу…тут уже все получилось (спасибо за подсказки)
теперь тесты начинаются с уже авторизированным юзером.
правда проявилась бага, очень странная…при попытке заполнить инпут в попапе…драйвер пишет в урл, а не в инпут (через стандартную авторизацию такого бага нет)


(Александр Таранков) #9

Интересно каков выигрыш в скорости? И за счет чего? И не баг ли это, что форма авторизации такая тяжелая? Это всё к вопросу целесообразности автоматизации… не все и не всегда надо автоматизировать. И правильнее исправить баг, чем доблестно его обойти в тесте


(Анна Григорьева) #10

смотрела на прогоне 25 тестов - на 2 минуты меньше


(Анна Григорьева) #11

на счет бага оказалось все куда интереснее https://code.google.com/p/selenium/issues/detail?id=2487


(Александр Таранков) #12

Баг исправлен 3.5 года назад


(Анна Григорьева) #13

да я видела…
да и при стандартном использовании в том же месте баг не проявляется.
а вот после httpclient авторизации в некоторых местах фокус в адресную строку слетает


(Dmitry Bogatko) #14

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