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

问题描述

JSR223采样器中的请求可以正常工作,但是这是带有0和空值的采样器结果和响应数据:

View Results Tree - JSR223 Sampler - Sampler result

enter image description here

Sample结果(红色矩形)中的指标等于0。 没有响应数据(标头和正文)都可见。

是否可以在Sampler结果选项卡中以某种方式获取实数而不是0 0 0 0 0 0,并在Response data选项卡中获得可见的响应?

JSR223采样器代码:

enter image description here

解决方法

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

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

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

注意,SampleResult是JMeter绑定到元素中的变量名称,而不是类,因此:

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

编辑(添加JSR223 Sampler代码后):

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

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

您可以使用利用Webdriver#executeScript()的代码从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函数从WebDriver.executeScript()获取连接,完成后就可以使用SampleResult.setConnectTime()SampleResult.setLatency()

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

    SampleResult.setResponseData(driver.getPageSource())
    SampleResult.setBytes(driver.getPageSource().length())
    
  3. pre-defined shortcut的形式删除org.apache.jmeter.samplers.SampleResult的导入

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...