Jmeter неправильно извлекает значение с помощью reg ex extractor - PullRequest
1 голос
/ 11 мая 2010

Jmeter неправильно извлекает значение с помощью регулярного выражения.
Когда я играю с этим регулярным выражением (NAME="token" \s value="([^"]+?)") в regex coach со следующим html, все работает нормально, но когда я добавляю reg с экстрактором регулярных выражений в запрос, он не находит значение, даже если это тот же самый html в выводе.

<HTML>
<script type="text/javascript">
    function dostuff(no, applicationID)
    {
        submitAction('APPS_NAME' , 'noSelected=' + no + '&applicationID=' + applicationID);
    }
</script>

<FORM NAME="baseForm" ACTION="" METHOD="POST">
    <input type="hidden" NAME="token" value="fc95985af8aa5143a7b1d4fda6759a74" >

<div id="loader" align="center">
        <div>
            <strong style="color: #003366;">Loading...</strong>
        </div>
        <img src="images/initial-loader.gif" align="top"/>
    </div>

<BODY ONLOAD="dostuff('69489','test');">

</FORM>
</HTML>  

Из экстрактора регулярных выражений

Reference Name: token
Regular Expression: (NAME="token" \s value="([^"]+?)")
Template: $1$
Match No.: 1
Default value: wrong-token

Запрос, следующий за моим POST предыдущего кода, возвращается:

POST data:
token=wrong-token

в следующем запросе в дереве просмотра.

Но когда я проверяю реальный запрос в прокси, токен появляется.

Примечание: я попробовал регулярное выражение без скобки и тоже не работает.

У кого-нибудь есть идеи, что здесь не так?
Почему jmeter не может найти мой токен с помощью экстрактора регулярных выражений?

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

Ваше регулярное выражение ищет текст NAME="token", за которым следует пробел, затем пробел, табуляция или символ новой строки, затем пробел, за которым следует текст value=", за которым следуют один или несколько не кавычек символов сопровождаемый другим ".

Если он не обнаружит, что в строке, которую он просматривает (и ваш образец текста не совпадает), произойдет сбой.

Что вы действительно пытаетесь сделать? Похоже, вы анализируете HTML с помощью регулярных выражений. Не хорошая идея.

0 голосов
/ 27 ноября 2014

Вам необходимо обновить форматы регулярных выражений следующим образом:

Reference Name: token
Regular Expression: NAME="token"\svalue="(.+)"
Template: $1$
Match No.: 1
Default value: wrong-token
0 голосов
/ 16 октября 2012

Вы можете использовать XPath Extractor вместо Regular Expression Extractor.

Ваш запрос xpath должен вернуть значение, которое вы хотите извлечь.
В этом случае это будет выглядеть так:

//input[@type="hidden"][@name="token"]/@value

Извлеченное значение будет сохранено в переменной jmeter, указанной в поле «Reference Name» XPath Extractor (например, ${token} в вашем случае).


ПРИМЕЧАНИЕ: Поскольку здесь XPath Extractor используется для анализа ответа HTML (не XML), убедитесь, что Использовать Tidy (толерантный синтаксический анализатор) - ПРОВЕРЕНО (в Панель управления XPath Extractor ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...