【问题标题】:How to get value from global variables in JMeter如何从 JMeter 中的全局变量中获取值
【发布时间】:2018-08-27 16:04:51
【问题描述】:

我正在尝试从响应代码中的全局变量中获取值。我已经尝试过正则表达式和 Beanshell 代码,但我仍然将值设为空。有人可以帮我解决这个问题吗?

我的 beanshell 代码:

import org.apache.jmeter.services.FileServer;
String path=FileServer.getFileServer().getBaseDir();
String sid= vars.get("whiteboardVars");
FileOutputStream f = new FileOutputStream("/Users/diya/testgui/sesid.csv", true); //spec-ify true if you want to overwrite file. Keep blank otherwise.
p = new PrintStream(f); 
this.interpreter.setOut(p); 
p.println(sid);
f.close();

Debug sampler output- whiteboardVars = 0 here

Search of whiteboardVars which exists in the response data of the http request. My main target is to get the sessionId from the whiteboardVars variable

【问题讨论】:

  • 你能分享你的正则表达式吗?
  • 当然 @ararar 是,** 参考名称 = wbVars ** , ** 正则表达式 = "whiteboardVars":"(.+?)" ** , ** 模板 = $1$ **
  • 您想从响应中获取哪个值,它是 whiteboardVars 的完整有效负载吗?还是只有会话 ID?
  • 我只想从那个 whiteboardVars 全局变量 @ararar 中获取 sessionID

标签: jmeter


【解决方案1】:
  1. 检查您的whiteboardVars 变量是否真的具有使用Debug Sampler and View Results Tree listener 组合的值。如果未定义变量,您将其写入文件的尝试将毫无意义,因此请仔细检查它是否具有该值。
  2. 请注意,starting from JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language 用于任何形式的脚本。您将能够将您的代码缩短到这一行:

    new File('/Users/diya/testgui/sesid.csv').newWriter().withWriter { w -> w << vars.get('whiteboardVars') }
    

    而且速度会更快。

【讨论】:

  • 感谢@Dmitri T 的快速响应。我使用调试采样器对其进行了验证,它出现在我的搜索结果树的响应代码中(因此我确认它存在)。我已经尝试在 JSR223 预处理器中使用您上面提到的代码,但它仍然在我的 csv 文件中给出了 null 值
  • 请用您的测试计划截图更新您的问题,并在完成后通知我。如果有任何错误,请尝试打开日志查看器窗口
  • 我已经更新了问题中的两张图片。 @Dmitri T 如果您需要任何其他输入,请告诉我。也没有错误,正如我所说我收到的值为 null 但没有错误
  • 您的正则表达式提取器不起作用,您需要将您的正则表达式修改为"sessionId":(\d+), 之类的内容。如果您在创建正则表达式时遇到问题 - 请选择 Boundary Extractor,它应该更易于使用。确保将后处理器范围切换到 Body
  • 在将正则表达式更新为“sesionId”:(\d+) 后,它现在可以工作了。非常感谢@Dmitri T。
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多