JMeter 请求使用 JSR223 - 0 和空响应而不是实际值

JMeter request using JSR223 - 0 and empty response instead of real values

JSR223 采样器中的请求工作正常,但采样器结果和响应数据为 0 和空值:

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

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

JSR223采样器代码:

根据 reference documentation,您可以调用这些方法:

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

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

注意SampleResult是JMeter绑定到元素的变量名,不是class,所以:

  • 不用前缀org.apache.jmeter.samplers.SampleResult,直接用SampleResult
  • 不要导入 org.apache.jmeter.samplers.SampleResult

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

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

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

您可以从 Webdriver#executeScript() using such code that exploits Timing API:

中获取值
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)");
  1. 连接时间和延迟 - 您需要从 Navigation Timing API using WebDriver.executeScript() 函数中获取它,完成后您可以使用 SampleResult.setConnectTime()SampleResult.setLatency()

  2. 可以使用 WebDriver.getPageSource() 函数获得响应,因此您应该能够执行以下操作:

    SampleResult.setResponseData(driver.getPageSource())
    SampleResult.setBytes(driver.getPageSource().length())
    
  3. 删除 org.apache.jmeter.samplers.SampleResult 的导入,因为它作为 pre-defined shortcut