регулярное выражение с использованием динамического ввода в Jmeter (экстрактор регулярных выражений) - PullRequest
0 голосов
/ 23 октября 2018

У меня есть вопрос относительно экстрактора регулярных выражений Jmeter.Я пытаюсь реализовать 1 сценарий, но не могу сделать то же самое.Ниже приведены подробности:

Требование:

В Jmeter я определил пользовательскую переменную: String VAR = KZ

Теперь я пытаюсь использовать экстрактор Regex, чтобы изОтвет HTML, регулярное выражение будет соответствовать значению VAR в HTML (определено ниже) и будет извлекать имя класса span, поскольку мне нужно установить флажок ON для KZ.

Требуется обработать функциональность флажка ON через пользовательскую переменную, котораяозначает, что я не хочу жестко кодировать имя класса вместо этого на основе определенной пользователем переменной (которая будет значением td, т.е. в этом примере KZ), я должен получить имя класса, используя Regex Extractor.Может ли кто-нибудь помочь, пожалуйста, как действовать?

Ниже приведен HTML-код:

<tr class="trClass">
<td style="width: 13.5%;">
<span class="checkbox"><input id="ctl00ctl94" type="checkbox" name="$ctl95$" 
 onclick="return validatecheck();" /></span>
</td>
<td style="width: 41.2%;"> KZ </td>
<td style="width: 0%; display: none;"> 5581357 </td>
<td style="width: 32%;"> 06/03/2018 2:22:38 PM </td>
</tr>
<tr class="trClass">
<td style="width: 13.5%;">
<span class="checkbox"><input id="ctl00ctl95" type="checkbox" name="$ctl95$" 
onclick="return validatecheck();" /></span>
</td>
<td style="width: 41.2%;"> TM </td>
<td style="width: 0%; display: none;"> 5581358 </td>
<td style="width: 32%;"> 06/03/2018 2:22:38 PM </td>
</tr>
<tr class="trClass">
<td style="width: 13.5%;">
<span class="checkbox"><input id="ctl00ctl96" type="checkbox" name="$ctl96$" 
onclick="return validatecheck();" /></span> </td>
<td style="width: 41.2%;">TR </td>
<td style="width: 0%; display: none;"> 5581359  </td>
<td style="width: 32%;"> 06/03/2018 2:22:38 PM  </td>
</tr>

1 Ответ

0 голосов
/ 23 октября 2018

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

  • их трудно разрабатывать и / или поддерживать
  • они очень чувствительныдля изменения разметки, следовательно, хрупкого, то есть, если порядок атрибутов изменяется или что-то переходит на новую строку - это просто испортит ваше регулярное выражение

Так что я бы рекомендовал перейти на другой постпроцессор, который может работать сDOM напрямую, например XPath Extractor

Соответствующий запрос XPath, который извлечет имя класса span, который находится над текстом KZ, будет выглядеть примерно так:

//td[contains(text(),'KZ')]/preceding::*/span/@class

JMeter View Results Tree

Конечно, вы можете заменить KZ ссылкой на переменную JMeter, т.е.

//td[contains(text(),'${VAR}')]/preceding::*/span/@class

Однако вы не сможете проверить своидля запросов в режиме XPath Tester прослушивателя View Results Tree вам придется вместо этого выбрать Debug Sampler , чтобы визуализировать полученную переменную.

Изучите Учебное пособие по XPath и Использование руководства по извлечению XPath в JMeter для ознакомления с языком XPath.


Также учтите, что согласно главной странице проекта JMeter :

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

Так что я не верю, что выбор имени класса span решит вашу проблему, скорее всего, вам понадобитсяотправьте входное имя в качестве параметра, поэтому вы должны искать

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