Как протестировать CAS с помощью jmeter?

  • запрос:

    Я отправляю http-запрос "get", не имеет параметров;
    путь: http://192.168.22.139:8080/KSP

  • отклик:

    <input id="username" type="text" name="username" required/>
    <input id="password" type="password" name="password" required/>
    <input type="hidden" name="lt" value="LT-697-vbNmm6NKOZ0cd7Wg1ywzbMKLa0DnOc" />
    <input type="hidden" name="execution" value="e1s1" />
    <input type="hidden" name="_eventId" value="submit" />
    

И я добавляю два экстрактора XPath, чтобы получить lt и execution:

  • имя ссылки: lt;
    запрос xPath: //*[@id="login"]/input[3]
  • имя ссылки: execution;
    запрос xPath: //*[@id="login"]/input[4]

введите здесь описание изображения

Затем я отправляю еще один запрос с username/password/service/It/execution/_eventId:

введите здесь описание изображения

Ошибка: билет и выполнение, которые я получаю, пусты, я получаю xpath через chrome, так в чем проблема?


person Olivia Wang    schedule 18.11.2013    source источник
comment
Экстрактор CSS/JQuery также может получить lt. ввод[имя=lt]   -  person Olivia Wang    schedule 20.11.2013
comment
Экстрактор CSS/JQuery также может получить lt. ввод[имя=lt]   -  person Elton Wang    schedule 09.01.2014


Ответы (4)


Из первого ответа можно использовать экстрактор регулярных выражений для извлечения тика и lt. извлечь билет

Затем отправьте второй запрос с параметром:

username/password/It/execution/_eventId/_eventId введите здесь описание изображения

Кстати, вы должны добавить HTTP Cookie Manager, введите здесь описание изображения

person Olivia Wang    schedule 17.12.2013

Я не видел параметров вашего первого запроса. По крайней мере, я не видел lt.

Второй запрос должен быть запросом GET, а параметры: service и ticket (это не jsessionid, значение генерируется CAS, и то же самое с параметр lt в первом запросе на вход в CAS).

person Bugdaily    schedule 18.11.2013
comment
Я отредактировал свой вопрос; В моем первом запросе, как я могу получить It? Из ответа 1 я получаю билет. В первом запросе какой параметр мне нужно отправить и как насчет второго запроса? - person Olivia Wang; 18.11.2013
comment
@OliviaWang, когда вы открываете страницу входа в CAS, должен быть скрытый ввод с именем lt, который вы можете получить с помощью Regular Expression Extractor. - person Bugdaily; 18.11.2013
comment
Ваше предложение правильное, я отредактировал свой вопрос. Проблема в том, что я не могу получить lt и исполнение, пожалуйста, помогите мне. - person Olivia Wang; 19.11.2013
comment
Может быть, вы можете попробовать Извлечение регулярных выражений с помощью регулярных выражений: lt=(.+) - person Bugdaily; 19.11.2013
comment
Я проголосовал за ваш ответ, но у вопроса все еще есть проблема с XPath Extractor, поэтому мне очень жаль... - person Olivia Wang; 20.11.2013
comment
Вы можете войти в систему с помощью JMeter сейчас? - person Bugdaily; 20.11.2013
comment
давайте продолжим это обсуждение в чате - person Bugdaily; 20.11.2013

Есть несколько вещей, которые вам нужно изменить во втором запросе:

  • добавить параметр execution (извлечь его из первого запроса, например, с помощью XPath Extractor или < a href="http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor" rel="nofollow">Regular Expression Extractor),

    • the XPath expression would be something like .//*[@id='fm1']//*[@name='execution']/@value
  • добавить параметр _eventId=submit,

  • параметр lt (логин-тикет) тоже нужно извлечь из формы входа - он каждый раз меняется; см. XPath Extractor или Regular Expression Extractor,

    • XPath expression: .//*[@id='fm1']//*[@name='lt']/@value,
  • не требуется, но будет выглядеть лучше - замените GET на POST.
person psiqta    schedule 18.11.2013
comment
Ваше предложение правильное, я отредактировал свой вопрос. Проблема в том, что я не могу получить lt и исполнение, пожалуйста, помогите мне. - person Olivia Wang; 19.11.2013
comment
Все еще не могу получить lt и выполнение, вместо этого я использую экстрактор регулярных выражений, и он работает хорошо. Все же разрешите поблагодарить вас. - person Olivia Wang; 20.11.2013

Если вы тестируете сам вход в CAS, я могу предложить использовать прокси-сервер JMeter HTTP записывать процесс входа в систему, перехватывать все передаваемые значения, обнаруживать те, которые являются динамическими, и обрабатывать их с помощью экстрактора регулярных выражений, XPath, Beanshell и т. д. Постпроцессоры - то, что вам удобнее.

В случае, если ваше приложение находится за CAS, я предполагаю, что вход в CAS просто добавляет файл cookie, и ваше приложение считает, что пользователь аутентифицирован на его основе. В этом случае вы можете просто сохранить файлы cookie где-нибудь в файле CSV и использовать их через Диспетчер файлов cookie HTTP для имитации аутентифицированных пользователей.

person Dmitri T    schedule 18.11.2013