Мне нужно захватить orderIds в формате массива из ответа Jmeter и хочу использовать его при следующем вызове POST - PullRequest
1 голос
/ 19 июня 2019

Я не могу извлечь orderID в формате массива. orderID 2072764,2072763,2072762,2072761,2072760,2072759,2072758 и т. д.

<tbody><tr class="row" data-href="/order/2072765">
        <td class="column checkbox"><input type="checkbox" disabled /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072764">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072763">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072762">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072761">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072760">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072759">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072758">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr> <tr class="row" data-href="/order/2072757">
        <td class="column checkbox"><input type="checkbox" /></td>
        <td class="column wide"></td></tr><tr></tr></tbody>
        </table>

Я пробовал с помощью средства извлечения регулярных выражений: - /order/(.+?) BeanShell Sampler

str = prev.getResponseDataAsString();
log.info("Previous response is "+str);
var order=str.get(tr);
//log.info(str.get(tr));

Ответы [ 3 ]

2 голосов
/ 19 июня 2019

Пожалуйста, проверьте ниже: -

  1. RegEx, чтобы получить все значения enter image description here
  2. Постпроцессор JSR223 с кодом ниже: -
List<Integer> var_OrderAr = new ArrayList()

for (def i = 1; i <= ${var_Order_matchNr}; i++) {
  var_OrderAr.add(vars.get("var_Order_" + i))
}
log.info "<<<<<<<<<<<<<<<"+var_OrderAr

String formattedString = var_OrderAr.toString()
    .replace("[", "")  //remove the right bracket
    .replace("]", "")  //remove the left bracket

log.info "<<<<<<<<<<<<<<<"+formattedString

vars.putObject("formattedString", formattedString)
Передайте переменную созданного массива, такую ​​как $ {formattedString}, во втором запросе enter image description here

Надеюсь, это поможет.

0 голосов
/ 19 июня 2019
  1. Используйте Regex, как описано ниже на изображении ниже. Regex

  2. Добавить отладочный сэмплер.

  3. Запустите сценарий.
  4. Откройте сэмплер Debug в Дереве результатов просмотра
  5. вы можете заметить, что "order_1_g1" содержит идентификатор 1-го порядка, а "order_2_g1" содержитИдентификатор 2-го порядка и т. Д.
  6. Теперь вы можете использовать эти переменные в любом месте.

Debugsampler

0 голосов
/ 19 июня 2019

Я сделал это с помощью приведенного ниже кода в JSR223 PostProcessor

def str = prev.getResponseDataAsString()
log.info("Previous response is "+str);
def pat = /\/order\/(.*)\"/
def mm = str =~ pat
if (mm){
    //log.info("order regex" + mm[0][1]);
    def ss = mm.size()
    def finList = []
    mm.each{
        finList.push('"' + it[1] + '"')
        log.info("id="+it[1])
    }
    def orderIDs = finList.join(",")
    log.info("finVal" + orderIDs)

}
...