【问题标题】:How to capture dynamic value in regular expression which depend on another dynamic value如何在正则表达式中捕获依赖于另一个动态值的动态值
【发布时间】:2016-03-29 06:11:00
【问题描述】:

我是 Jmeter 的新手,我正在寻找一种捕获粗体“id”(“id”:“56fa091ae4b081fb934b083a”)的方法,它具有基于“parentEventId”的动态数据,这也是动态的元数据部分中的值(我已经从前一个线程组中获取了“parentEventId”值)。可以有多个具有不同“parentEventId”的记录,我需要获取所选“parentEventId”的提到的“id”数据。

这可能有一个简单的答案,但我找不到在 If Controller 中使用的表达式,我尝试了几个 RegEx 提取器,但它们都没有工作,我也无法在网络上找到我的问题的任何肯定答案。 因此,非常感谢您对此的任何帮助,提前谢谢您

以下是我的身体数据;

[{"id":"56fa091ae4b081fb934b083a","eventCalendar":{"id":"53757a6c156695a10bcefd57","type":"PERSON","displayName":"测试名称"} ,"organizerEvent":true,"start":1459486061505,"end":1459489661505,"allDay":false,"title":"测试标题","description":"测试描述","location":"测试位置","className":"cs-12","type":"CALENDAR","visibleToPublic":false,"metadata":{"parentEventId":"56fa091ae4b081fb934b0839"},

【问题讨论】:

  • 向我们展示您的尝试。
  • 附上截图,我试过的就是这么简单。

标签: regex jmeter


【解决方案1】:

如果您的 parentEventIdid 相等 - 为什么不使用 parentEventId?如果没有 - 用完整的回答更新您的问题并显示关系。

顺便说一句,我们最好通过JMeter Plugins 项目获得JSON Path Extractor 来处理JSON 数据,它比正则表达式更方便。例如,您可以使用以下内容提取 parentEventId

$..parentEventId[0]

参考资料:

【讨论】:

    【解决方案2】:

    如果我理解正确,您将获得动态parentEventId 信息,并且您希望相应地从 JSON 数据中提取子 ID。如果是这种情况,以下可能是您的解决方案

    var parentEventId = "56fa091ae4b081fb934b0839",
                 data = '[{"id":"56fa091ae4b081fb934b083a","eventCalendar":{"id":"53757a6c156695a10bcefd57","type":"PERSON","displayName":"Test Name"},"organizerEvent":true,"start":1459486061505,"end":1459489661505,"allDay":false,"title":"test title","description":"test 56fa091ae4b081fb934b083adescription","location":"test location","className":"cs-12","type":"CALENDAR","visibleToPublic":false,"metadata":{"parentEventId":"56fa091ae4b081fb934b0839"},',
                  rex = new RegExp('\\[{"id":"([a-f0-9]{24})"(?=.*{"parentEventId":"' + parentEventId + '"})',"g"),
                  res = rex.exec(data);
    console.log(res[1]); // 56fa091ae4b081fb934b083a
    

    【讨论】:

    • 是的@Redu,你的问题是正确的,真的很抱歉,我不确定我应该在哪里使用这个解决方案,到目前为止我只使用了 RegEx。那么这应该作为 Beanshell PostProcessor 输入还是什么?
    • 抱歉@Thimz 我对 Jmeter 完全没有经验。但也许这篇关于 Jmeter 正则表达式的博客文章可以帮助你:blog.flood.io/guide-to-jmeter-regular-expressions
    • 是的@Redu 我已经检查了该博客文章,但这对我没有帮助我尝试了一些正则表达式并得到了我的问题的答案,即; "id":"([^"]+)"(?:.)*"parentEventId":"56fe3409e4b01e5b9661d878" 我之前捕获的 'parentEventID' 在一个单独的线程组变量中,现在我正在努力给出那个变量值到上面。如果你能帮助解决这个问题,非常感谢:) BeanshellPostProcessor used {__setProperty(parentEventID,${parentEventID})} 将 RegEx 编辑为 ,{"id":"([^"]+)"(? :.)*"parentEventId":"{__Property(parentEventID)}" 但这不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2022-01-14
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多