Перейти к содержимому

Selenium WebDriver: полное руководство
онлайн, начало 19 октября
Логи как инструмент тестировщика
онлайн, начало 22 октября
Школа для начинающих тестировщиков
онлайн, начало 22 октября
Тестирование REST API
онлайн, начало 22 октября
Фотография

Jmeter. Авторизация. Как и куда записать полученный токен?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 22

#1 VitaliySloupok

VitaliySloupok

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Шипицын Виталий

Отправлено 01 Октябрь 2015 - 10:11

Добрый день.

 

Начал заниматься нагрузочным тестированием и сразу столкнулся с такой ситуацией:

для прогона сценария нагрузки необходима авторизация пользователя. Все действия, которые должны быть после авторизации у меня отваливаются. (из-за того, что у меня не сохраняется и нигде не используется токен) Скриншот:

http://myscreenshot....51619079761.png

 

Вопрос: Как мне получить и куда записать токен, чтобы остальные запросы проходили и не отваливались?

 

Логика: 

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

 

Сценарий: 

- в запросе "/token" идет отправка пароля и эл.адреса методом POST. Скриншот:

http://myscreenshot....98714822127.png

 

результат сценария: 

http://myscreenshot....12322859564.png

 

Дальше, все действия, которые должны пройти для авторизованного пользователя выходят с ошибкой:

 http://myscreenshot....63349475488.png

 

 

Подскажите, пожалуйста, куда нужно записать этот токен и каким образом.

В консоли токен обозначается следующим образом: http://myscreenshot....14132815066.png

 

Буду благодарен за помощь.

 

После слов:

- читал, что нужно добавить HTTP Cookie manager, а также добавлять HTTP Authorization Manager. Но с этим не выходит (скорее всего сам что-то криво делаю)


  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 815 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 03 Октябрь 2015 - 18:08

Да, как минимум надо добавить в сценарий HTTP Cookie Manager, это должно обеспечить передачу cookies в заголовке.

 

Если этого недостаточно -- нужно ещё добавить заполнение заголовка Authorization в HTTP Header Manager. Но сам он заполняться, конечно, не будет. Необходимо в узел, выполняющий запрос /token, добавить какой-нибудь экстрактор, который будет извлекать этот токен в переменную, а потом подставлять значение этой переменной в нужных местах.


  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#3 VitaliySloupok

VitaliySloupok

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Шипицын Виталий

Отправлено 22 Октябрь 2015 - 13:54

Благодарю за помощь!

Сделал, как вы сказали. Добавил в узел /token Regular expression extractor http://myscreenshot....54724981723.png. Затем в узлы, где необходима проверка токена, добавил в HTTP Header Manager обращение к этому токену, и все запросы выходят без ошибок, все работает.

http://myscreenshot....03474782304.png

 

Но в данном случае мне пришлось в каждый узел в HTTP Header Manager добавить обращение к переменной ${token}.

Вопрос: Можно ли добавить общий HTTP Header Manager для всех запросов, чтобы не приходилось во всех запросах вбивать обращение к токену?


  • 0

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 815 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 23 Октябрь 2015 - 11:32

Благодарю за помощь!

Сделал, как вы сказали. Добавил в узел /token Regular expression extractor http://myscreenshot....54724981723.png. Затем в узлы, где необходима проверка токена, добавил в HTTP Header Manager обращение к этому токену, и все запросы выходят без ошибок, все работает.

http://myscreenshot....03474782304.png

 

Но в данном случае мне пришлось в каждый узел в HTTP Header Manager добавить обращение к переменной ${token}.

Вопрос: Можно ли добавить общий HTTP Header Manager для всех запросов, чтобы не приходилось во всех запросах вбивать обращение к токену?

 

Да, можно сгруппировать несколько сэмплеров, и сделать им общий HTTP Header Manager, который будет добавлять заголовки всем вложенным в него сэмплерам. Вот пример:

 

Прикрепленный файл  23-10-2015 14-28-35.png   64,72К   36 Количество загрузок:Прикрепленный файл  23-10-2015 14-29-50.png   84,91К   28 Количество загрузок:


  • 0

Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium


#5 VitaliySloupok

VitaliySloupok

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Шипицын Виталий

Отправлено 24 Октябрь 2015 - 14:22

Да, все получилось. Спасибо огромное!


  • 0

#6 luarvik

luarvik

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Luarvik Luarvik

Отправлено 18 Апрель 2017 - 10:05

сделал всё в точности, как описано в треде, но Response data всё равно возвращает {"detail":"Authentication credentials were not provided."}

 

 

ниже скриншоты, постарался сделать как можно более подробно

 

View Results Tree

http://joxi.ru/ZrJ4n75CEGYl2j

 

HTTP Request по которому отправляется логин/пароль 

http://joxi.ru/v29Dw51Tev0dmG

 

Regular Expression Extractor

http://joxi.ru/EA41wDOteBJvrb

 

HTTP Header Manager

http://joxi.ru/n2YBE61cg8X0A6

 

 

помогите, пожалуйста, разобраться в возможных причинах 


  • 0

#7 MrFuka

MrFuka

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Aaa

Отправлено 29 Ноябрь 2017 - 12:53

Добрый день.

 

Как и автор, начал заниматься нагрузочным тестированием и столкнулся с ситуацией как и у автора топика.. но как не пробывал, решить не могу

 

Метод POST проходит

Метод GET не проходит

 

Причина: 401, no access token found

 

Скриншоты:

http://i.piccy.info/...1/1200750/1.jpg

http://i.piccy.info/...0/1200750/2.jpg

http://i.piccy.info/...9/1200750/3.jpg

http://i.piccy.info/...5/1200750/4.jpg

http://i.piccy.info/...3/1200750/5.jpg

http://i.piccy.info/...4/1200750/6.jpg

http://piccy.info/vi...0e7d97220e89f8/

http://i.piccy.info/...0/1200750/8.jpg

http://piccy.info/vi...a6bc40cbabc5d7/

 

 

Буду признателен за помощь.


  • 0

#8 Skaild

Skaild

    Новый участник

  • Members
  • Pip
  • 9 сообщений

Отправлено 14 Декабрь 2017 - 02:49

Я, конечно, не мегаспец - мне тут самому пару недель назад помогали, недоуменно глядя на мои попытки в jmeter. 

 

Но у меня была похожая схема. Победил следующим образом:

 

1. Делаю первый http запрос на получения токена. Ему в параметры пишем grant_type, username, password и scope. 

2. К нему цепляю HTTP Header Manager. В нем пишем только Content-Type.

3. К запросу на токен привязываем экстрактор. Сколько я не бился - регулярку победить не смог, поэтому вытягиваю токен JSON экстрактором:

Variable names: access_token

JSON Path expression: $.access_token

Все. В переменной access_token у нас лежит токен.

4. К последнему get-запросу прикручиваем Header Manager. Но в нем уже не пишем username/password/grant_type и вот это вот все. Пишем проще: 

Authorization: bearer ${access_token}

Content-Type: application/json

 

 

Попробуйте - у меня работает. 


  • 0

#9 alessenika

alessenika

    Новый участник

  • Members
  • Pip
  • 1 сообщений


Отправлено 11 Январь 2018 - 09:00

Добрый день!

 

У меня очень схожая ситуация с автором топика, но другая ошибка.

 

Начала заниматься нагрузочным тестированием (использую JMeter 3.3) и столкнулась с проблемой: при выполнении сценария необходима регистрация пользователя. При нажатии на кнопку login получаю ошибку Response code: 403 Response message: FORBIDDEN

 

скрин: https://drive.google...iew?usp=sharing

 

решение: Погуглив, поняла, что проблема с куками. Добавив HTTP Cookie Manager решить проблему не получилось. Скорее всего не верно делаю.

 

 

Возможно кто-то сталкивался с такой ошибкой. Буду благодарна за помощь!


  • 0

#10 Vitalii_Sotnichenko

Vitalii_Sotnichenko

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 31 Июль 2018 - 10:11

У меня следующая ситуацияЖ

1.Создаю запрос c grant type, login, password and account id

https://www.screenca...om/t/ViuaOdkb0N

2. В Authorization Header Manager для этого запроса добавляю базовую авторизацию

https://www.screenca...om/t/x9rr8rR0Ja

3. Затем в следующем запросе с токеном добавляю или регулярку или джейсон екстрактор

https://www.screencast.com/t/ih2BxO3u

https://www.screenca...m/t/Rg4vuvZjBcX

4. Во всех следующих Authorization Header Manager добавляю эту переменную с екстрактора

https://www.screencast.com/t/SGLstl9f

 

В View results Tree для первого запроса вижу что access_token вернулся успешно 

https://www.screencast.com/t/WXLZbEXz

 

Но затем в части остальных запросах invalid token

 

https://www.screenca.../t/mBoxlQ6XwDRj

https://www.screencast.com/t/ioB1wvDh

 

 

Кто может подсказать в чем проблема? Может неправильная регулярка или неправильно передаю токен?


  • 0

#11 MissLeman

MissLeman

    Активный участник

  • Members
  • PipPip
  • 109 сообщений


Отправлено 31 Июль 2018 - 11:57

А вам для передачи токена точно не Bearer схема нужна (а не Basic)?

 

(я наверное что-то путаю, но вдруг)


  • 0

#12 Vitalii_Sotnichenko

Vitalii_Sotnichenko

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 31 Июль 2018 - 12:39

А вам для передачи токена точно не Bearer схема нужна (а не Basic)?

 

(я наверное что-то путаю, но вдруг)

 

Token type указан bearer

https://www.screenca...m/t/A9cwK7XaPmh


  • 0

#13 Vitalii_Sotnichenko

Vitalii_Sotnichenko

    Новый участник

  • Members
  • Pip
  • 5 сообщений

Отправлено 02 Август 2018 - 20:06

И еще в Дебаг семпелере почему-то access_token пустой

 

MeterVariables:
JMeterThread.last_sample_ok=false
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@1572df3d
START.HMS=231151
START.MS=1533067911741
START.YMD=20180731
TESTSTART.MS=1533240274394
__jmeter.USER_TOKEN__=Thread Group 1-1
access_token=

  • 0

#14 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 03 Сентябрь 2018 - 17:30

Здравствуйте. Такая же проблема - не получается передать Токен в header:

1. Получаем токен и отправляем его значение в переменную Token http://prntscr.com/kq5m2t

2. Дебагер видит Токен http://prntscr.com/kq5k04

3. Вставляем переменную Токен в Хеадер  http://prntscr.com/kq5kfn

4. При запросе вместо Токена пустота ((( http://prntscr.com/kq5l3p


  • 0

#15 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 064 сообщений
  • ФИО:Роман

Отправлено 03 Сентябрь 2018 - 22:05

видимо у вас сначала инициализуется HTTP Header Manager, переменная токен ещё не установлена, поэтому хедер Authorization устанавливается в "Bearer "

 

затем вы генерируете токен и устанавливаете переменную токен, но уже поздно, и все реквесты используют менеджер сгенерированный выше

 

разберитесь с порядком


  • 0

#16 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 04 Сентябрь 2018 - 03:28

 

разберитесь с порядком

Токен получается и помещается в переменную на шаге "Отправлен Логин и пароль"

В хеадере идет обращение к токену в запросе "Запрос списка юзеров" через 25 шагов после инициализации переменной.

 

http://prntscr.com/kqata8


  • 0

#17 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 064 сообщений
  • ФИО:Роман

Отправлено 04 Сентябрь 2018 - 07:10

возможно Header Manager инициализируется перед всеми шагами

 

сгруппируйте тесты, сейчас они как-то все на одном уровне, и непонятно что к чему относится

 

может Header Manager всё-таки надо переместить наверх

https://s3.amazonaws...05.1.12.f_6.jpg

 

 

 

В хеадере идет обращение к токену в запросе "Запрос списка юзеров" через 25 шагов после инициализации переменной.

уже видно что нелогично тест организован. В одной стороне инициализация, в противоположной стороне обращение. Можно это всё сделать в одной явной группе


  • 0

#18 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 04 Сентябрь 2018 - 16:56

уже видно что нелогично тест организован. В одной стороне инициализация, в противоположной стороне обращение. Можно это всё сделать в одной явной группе

Перетащил Header Manager вверх, но ничего не поменялось http://prntscr.com/kqk68n и http://prntscr.com/kqk8nd

Можете скинуть ссылку на пример логичной организации или на описание правильной организации кода? Этот сценарий записался через проксю, с виду все логично и понятно, но мне не с чем сравнивать ))


  • 0

#19 Spock

Spock

    Гуру

  • Members
  • PipPipPipPipPipPip
  • 1 064 сообщений
  • ФИО:Роман

Отправлено 04 Сентябрь 2018 - 17:01

https://jmeter.apach...ization_Manager

 

и группы используйте наконец, нет смысла "просто в начало ставить". Сначала надо записать переменную а потом уже в хедер её ставить. А у вас там переменная пустая


  • 0

#20 Alemix

Alemix

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Герасимов Алексей Михайлович

Отправлено 04 Сентябрь 2018 - 18:31

нет смысла "просто в начало ставить". Сначала надо записать переменную а потом уже в хедер её ставить. А у вас там переменная пустая

Да я догадываюсь, что в нее нужно записать переменную. Действиями из моего первого поста я это и пытался сделать.


  • 0


Тестирование производительности (JMeter)
онлайн, начало 2 ноября
Тестирование удобства использования
онлайн, начало 24 октября
Тестирование REST API
онлайн, начало 22 октября
Тестирование веб-приложений 2.0
онлайн, начало 16 ноября



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале