首页 > 解决方案 > 使用 JSR223 - 0 和空响应而不是实际值的 JMeter 请求

问题描述

JSR223 Sampler 中的请求可以正常工作,但这里是具有 0 和空值的 Sampler 结果和响应数据: 查看结果树 - JSR223 采样器 - 采样器结果

在此处输入图像描述

红色矩形中的示例结果中的指标等于 0。没有响应数据(标头和正文)可供查看。

是否有可能以某种方式获得实数而不是 0 0 0 0 0 0 用于采样器结果选项卡中的指标,并在响应数据选项卡中获得可见的响应?

JSR223 采样器代码: 在此处输入图像描述

标签: jmeterlistenerresponseperformance-testingjsr223

解决方案


根据参考文档,您可以调用这些方法:

 SampleResult.connectEnd();
 SampleResult.latencyEnd();
 SampleResult.sampleEnd();
 SampleResult.setResponseData(driver.getPageSource(), "UTF-8");

您可以使用 SampleResult javadocs查看您的所有方法或子类或自定义类。

注意 SampleResult 是 JMeter 绑定到 element 中的变量名,而不是 class,所以:

  • 不要使用 org.apache.jmeter.samplers.SampleResult 作为前缀,只需使用 SampleResult
  • 不要导入 org.apache.jmeter.samplers.SampleResult

编辑(在您添加 JSR223 采样器代码之后):

要填充延迟和连接时间,请使用:

  • SampleResult.setConnectTime()
  • SampleResult.setLatency()

您可以使用利用Timing API的代码从Webdriver#executeScript()获取值:

long pageLoadTime= (Long)js1.executeScript("return (window.performance.timing.loadEventEnd-window.performance.timing.responseStart)");
long latency= (Long)js1.executeScript("return (window.performance.timing.responseStart-window.performance.timing.navigationStart)");
long endtoEndRespTime= (Long)js1.executeScript("return (window.performance.timing.loadEventEnd-window.performance.timing.navigationStart)");
long connectTime= (Long)js1.executeScript("return (window.performance.timing.connectEnd -window.performance.timing.connectStart)");

推荐阅读