问题描述
JSR223采样器中的请求可以正常工作,但是这是带有0和空值的采样器结果和响应数据:
Sample结果(红色矩形)中的指标等于0。 没有响应数据(标头和正文)都可见。
是否可以在Sampler结果选项卡中以某种方式获取实数而不是0 0 0 0 0 0,并在Response data选项卡中获得可见的响应?
解决方法
根据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)");
,
-
连接时间和延迟-您需要使用Navigation Timing API函数从WebDriver.executeScript()获取连接,完成后就可以使用
SampleResult.setConnectTime()
和SampleResult.setLatency()
-
可以使用WebDriver.getPageSource()函数获得响应,因此您应该可以执行以下操作:
SampleResult.setResponseData(driver.getPageSource()) SampleResult.setBytes(driver.getPageSource().length())
-
以pre-defined shortcut的形式删除
org.apache.jmeter.samplers.SampleResult
的导入