Друзья подскажите!
Хочу сделать авторизацию через request post запрос, дальше, передать куки все необходимое в driver.
Пытался делать через selenium wire - отредактировать post запрос, но не вышло.
def interceptor(request):
if request.url == ' login api url ':
del request.method
request.method = 'POST'
del request.headers['Content-Type']
request.headers['Content-Type'] = 'application/json'
# The body is in bytes so convert to a string
body = request.body.decode('utf-8')
# Load the JSON
data = json.loads(body)
# Add a new property
data['login'] = 'login '
data['password'] = 'password '
# Set the JSON back on the request
request.body = json.dumps(data).encode('utf-8')
# Update the content length
del request.headers['Content-Length']
request.headers['Content-Length'] = str(len(request.body))
Также делаю запрос через библиотеку requests - и в этом случае respond верный.
Подскажите какие подходы использовать в авторизации как preconditions к основному тестовому сценарию?
К сожалению не могу подсказать как работает requests, делали на java через http apache client, не идеально, но работает. В общем виде это делается приблизительно так:
Шлём реквест на авторизацию. Если реквест копия фронтового, то в ответе обычно прилетает куки, эти куки надо выдрать из респонса и засунунть в драйвер, с чем я не помогу, это с тем как из респонса библиотеки requests извлечь прилетевшие куки, т.к. банально не знаю поддерживает ли она такие приколы. Как минимум оттуда можно выдрать хидер респонса set-cookie или аналог и играть уже с ним, другой вопрос, что возможно, придётся парсить их самому, и/или как-то преобразовывать. Далее вставляем полученное в селениум:
в смысле, страничка с формой логин-пароль поломалась а бэкенд сервис работает? довольно редкий кейс, на мой взгляд, чтобы уделять ему время. окупятся ли затраты?