【问题标题】:Parsing value from the Jmeter string response从 Jmeter 字符串响应中解析值
【发布时间】:2021-06-03 05:23:42
【问题描述】:

我试图在 Jmeter 上获得 post_data[‘postcode’] 的值。我尝试使用以下代码使用 JSR223 PostProcessor 进行解析,但看起来我的代码无法找到该变量名。

回复:

<script type="text/javascript">
    parent.$("#dialog:ui-dialog").dialog("destroy");
    parent.$("#dialog-message div").html("");

    var url = '';
    var post_data = {};
    post_data[‘user’] = “value1”;
    post_data[‘city’] = “value2”;
    post_data[‘postcode’] = “value3”;
    post_data[‘country’] = “value3”;

</script>

JSR223 PostProcessor groovy 脚本:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
String stringToSearch=prev.getResponseDataAsString();
Pattern p = Pattern.compile("post_data[‘postcode’] = (\\w+)");   
Matcher m = p.matcher(stringToSearch);

if (m.find()){
    vars.put("postcode", m.group(1));
}

非常感谢任何帮助。

【问题讨论】:

  • 当然可以,因为您使用 \w+ 而不匹配引号并且不要转义 [。使用"post_data\\[[‘']postcode[’']]\\s*=\\s*[“'\"]([^\"”']+)[\"”']"
  • 嗨@WiktorStribiżew 谢谢。看起来它可能有效但也会引发错误,您对此有任何想法吗? RROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 PostProcessor javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: org.apache.jmeter.threads.JMeterVariables.log() is applicable for argument types: (java.lang.String) values: [value3]

标签: regex parsing groovy jmeter


【解决方案1】:
  1. 您需要用引号将匹配组括起来

  2. 你需要转义meta characters

  3. Groovy 提供了开箱即用的match operator,因此您可以将代码简化为:

    vars.put('postcode', (prev.getResponseDataAsString() =~ /post_data\[‘postcode’\] = “(\w+)”/)[0][1])
    

    演示:

更多信息:

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多