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

Фотография

Использование Post-Proccesor

jmeter

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

#1 ImamTrotsky

ImamTrotsky

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Ясиновский Николай Петрович

Отправлено 21 мая 2018 - 15:39

Всем ДВС!

Ситуация следующая, есть http post, результат которого токен входа. То есть:

Запрос1  = Токен

Запрос 2 - невозможен без полученного токена.

Подскажите, как правильно записывать результаты запросов в джеметре? Например в какую-нибудь строку, чтобы потом наследовать значение этой строки в другие http запросы.

Гугл говорит, что можно использовать регулярку. Есть ли более оптимальные решения? Если нет, прошу разжевать работу Regular Expression Extractor.

 


  • 0

#2 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 22 мая 2018 - 08:54

Всем ДВС!

Ситуация следующая, есть http post, результат которого токен входа. То есть:

Запрос1  = Токен

Запрос 2 - невозможен без полученного токена.

Подскажите, как правильно записывать результаты запросов в джеметре? Например в какую-нибудь строку, чтобы потом наследовать значение этой строки в другие http запросы.

Гугл говорит, что можно использовать регулярку. Есть ли более оптимальные решения? Если нет, прошу разжевать работу Regular Expression Extractor.

 

Гугл правильно говорит, использовать Regular Expression Extractor в котором сохранить Ваш токен в переменную. Если вам возвращается json то можно использовать еще JSON Extractor. Потом в следующих запросах можно обращаться к этой переменной.

И было бы хорошо увидеть что вам возвращает Запрос1.


  • 1

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 22 мая 2018 - 08:58

Привет

 

 

Метод Получения токена. Надо знать, в чем ответ. 

Если в JSON, добавляешь какой-нибудь JSON Extractor

-Names  token

- JSON PATH sessionToken

 

Потом в HTTP Header Manager 

name 

session_token ${token}


  • 1

#4 ImamTrotsky

ImamTrotsky

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Ясиновский Николай Петрович

Отправлено 22 мая 2018 - 09:49

 

Гугл правильно говорит, использовать Regular Expression Extractor в котором сохранить Ваш токен в переменную. Если вам возвращается json то можно использовать еще JSON Extractor. Потом в следующих запросах можно обращаться к этой переменной.

И было бы хорошо увидеть что вам возвращает Запрос1.

 

Cпасибо!
Скрин запроса, ответ странный, возвращает html страницу 

Делая скрины, кажется нашел еще одну ошибку в свое работе. Некоторые запросы "засерены" - http://joxi.ru/Dr8MXkzt4ZvW0m , и в лиснерах нет данных о передаче данных запросов. Вероятно именно эти запросы выдают токен


  • 0

#5 ImamTrotsky

ImamTrotsky

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Ясиновский Николай Петрович

Отправлено 22 мая 2018 - 09:50

Привет

 

 

Метод Получения токена. Надо знать, в чем ответ. 

Если в JSON, добавляешь какой-нибудь JSON Extractor

-Names  token

- JSON PATH sessionToken

 

Потом в HTTP Header Manager 

name 

session_token ${token}

Cпасибо, сейчас пытаюсь с этим разобраться.

Если интересно, в посте вышел написал о всплывшем камне.


  • 0

#6 ImamTrotsky

ImamTrotsky

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Ясиновский Николай Петрович

Отправлено 22 мая 2018 - 15:55

Итак, в ходе теста понял что в начале треда ввел вас в заблуждение, код токена получаем немного другим способом, а именно:

При перехода на hostname нам перенаправляет на SSO страницу, она генерирует код токена, и направляет на страницу авторизации, которая в адресе содержит токен. То есть, токен генерируется еще до авторизации.

Скрин запроса который перенаправляет на страницу авторизации - http://joxi.ru/YmEMWjlt0bvDJm

 

Далее используя  Regular Expression Extractor я создал регэксп code - http://joxi.ru/vAWnJxEH1jGVZ2

И использовал его в запросах - http://joxi.ru/D2PLx.../xAeMnjZtpJL7JA

 

В итоге "${code}" сохраняет вот так значение  " <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR...e&scope=openid"

Где  я ошибся? я не правильно матчу регулярку ? Объясните плиз.


  • 0

#7 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 22 мая 2018 - 17:52

Итак, в ходе теста понял что в начале треда ввел вас в заблуждение, код токена получаем немного другим способом, а именно:

При перехода на hostname нам перенаправляет на SSO страницу, она генерирует код токена, и направляет на страницу авторизации, которая в адресе содержит токен. То есть, токен генерируется еще до авторизации.

Скрин запроса который перенаправляет на страницу авторизации - http://joxi.ru/YmEMWjlt0bvDJm

 

Далее используя  Regular Expression Extractor я создал регэксп code - http://joxi.ru/vAWnJxEH1jGVZ2

И использовал его в запросах - http://joxi.ru/D2PLx.../xAeMnjZtpJL7JA

 

В итоге "${code}" сохраняет вот так значение  " <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR...e&scope=openid"

Где  я ошибся? я не правильно матчу регулярку ? Объясните плиз.

Насколько я понял токен Вам нужно достать из урла. Регулярку я бы написал так code=(.*) и обратите внимание к чему Вы ее применяете (Вам нужно в Field to check выбрать не Body, а URL).


  • 0

#8 ImamTrotsky

ImamTrotsky

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Ясиновский Николай Петрович

Отправлено 23 мая 2018 - 08:44

 

Насколько я понял токен Вам нужно достать из урла. Регулярку я бы написал так code=(.*) и обратите внимание к чему Вы ее применяете (Вам нужно в Field to check выбрать не Body, а URL).

 

Не совсем.

HTTP запрос, получаем ответ в котором содержится код токена - http://joxi.ru/nAyK0wlCYy5Mkm

 

code=bpl28H5vOEiDRYqKjRmyqOw_Fy7_tRQdqntDXYZpJ6k.a816032c-30c4-4e85-b46e-ff09d748026c&execution=ddbd337e-df2b-49a7-afd4-5f47b39bc01f" method="post">

 

Его нужно забрать с помощью регулярки, и вставить в URL следующего запроса.

Но проблема в том, что есть другие HTTP запросы которые содержат аналогичные записи - http://joxi.ru/brRZ1RqCJy1oyr\

Написал вот такую регялрку -  authenticate?code=(.*)

вставил ее в  Path следующего запроса -  /auth/realms/login-actions/authenticate?code="${code}"

Но она не сработала - http://host-name.ru/...?code="${code}"


  • 0

#9 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 23 мая 2018 - 09:50

Во первых: откройте любой on-line regexp tester, вставьте в него свою страничку и смотрите что находит введеный вами регэксп
Во вторых, добавьте дебаг сэмплер, чтобы видеть что jmeter выкусывает из ответа

И ЕМНИП, кавычки вокруг подставляемой переменной лишние.


  • 1

#10 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 23 мая 2018 - 11:17

попробуйте так authenticate\?code=([^"]+)


  • 0

#11 ImamTrotsky

ImamTrotsky

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

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Ясиновский Николай Петрович

Отправлено 23 мая 2018 - 14:04

Спасибо! Получилось!

верное выражение action="https?://[^/]*([^"]+)"


  • 0



Темы с аналогичным тегами jmeter

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

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