Нужно некоторое руководство по выполнению Javascript с Jmeter - PullRequest
0 голосов
/ 20 февраля 2020

Я изучал Jmeter в последние пару недель, поэтому для меня это все еще тема sh. Последний тест, который я создал, состоит из логина, навигации по страницам и отправки формы в конце. Весь тест работает, но содержимое последней формы не передается в базу данных, и я полагаю, что это происходит потому, что это сделано с помощью JavaScript, а именно этого сценария:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['WebForm1'];
if (!theForm) {
    theForm = document.WebForm1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

Из того, что я узнал Я должен использовать JSR223 Sampler или Post-процессор для выполнения скриптов, но я не знаю, как это сделать. Должен ли я повторить код JavaScript, чтобы он давал тот же результат , или я могу просто повторно использовать исходный JavaScript?

Заранее спасибо!

Редактировать: I думаю, я спросил слишком рано. Я, очевидно, не могу повторно использовать код JavaScript. Я думаю, это должно быть сделано с помощью методов из JMeterContext и JMeterVariables, о которых я только что узнал. Я иду в правильном направлении?

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Идея такого инструмента, как JMeter, заключается в репликации поведения пользователя на уровне протокола (в данном случае HTTP). JMeter не будет создавать DOM-представление вашего веб-сайта и, следовательно, не сможет выполнить Javascript, которое вы видите выполненным в вашем браузере. Вам следует использовать сэмплер HTTP Request, выбрать метод POST HTTP и поместить данные формы в раздел параметров. Все это Javascript является чисто клиентским поведением и, следовательно, не относится к вашему тесту JMeter.

Пожалуйста, предоставьте более подробную информацию, если вы уже попробовали это, и это не удалось!

0 голосов
/ 24 февраля 2020

Согласно главной странице проекта JMeter :

JMeter не является браузером , он работает на уровне протокола. Что касается веб-сервисов и удаленных сервисов, JMeter выглядит как браузер (точнее, несколько браузеров); однако JMeter не выполняет все действия, поддерживаемые браузерами. В частности, JMeter не выполняет Javascript, найденные на HTML страницах. Также он не отображает HTML страниц как браузер (можно просмотреть ответ как HTML et c., Но тайминги не включены ни в какие сэмплы, и одновременно отображается только один сэмпл в одном потоке).

Так что вам не нужно копировать JavaScript вам нужно повторить HTTP POST-запрос , который генерируется этой JavaScript функцией, с использованием HTTP-запроса JMeter sampler

Наиболее вероятная причина вашего текущего запроса " не работает "отсутствует или неправильно реализована корреляция этих __EVENTTARGET и __EVENTARGUMENT dynamici c параметров.

Если вы только что записали эти параметры и ничего с ними не сделали - вы не сможете успешно воспроизвести свой сценарий, поскольку эти параметры имеют разные значения при каждом доступе к приложению, поэтому они должны быть коррелированный , пример alrorithm:

  1. Открыть первую страницу вашего приложения
  2. Извлечь хотя бы эти значения __EVENTTARGET и __EVENTARGUMENT, используя подходящий постпроцессор JMeter (большинство CSS Селектор Extractor ) и сохраните их в переменных JMeter
  3. В последующих запросах замените записанные жестко закодированные значения переменными JMeter из шага 2

Проверьте ASP. NET Вход в систему Тестирование с помощью статьи JMeter для более подробного объяснения с примерами работы с параметрами динамического запроса c.

Также не забудьте добавить HTTP Cook ie Manager в свой план тестирования

...