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)");
连接时间和延迟 - 您需要从 Navigation Timing API using WebDriver.executeScript() 函数中获取它,完成后您可以使用 SampleResult.setConnectTime()
和 SampleResult.setLatency()
可以使用 WebDriver.getPageSource() 函数获得响应,因此您应该能够执行以下操作:
SampleResult.setResponseData(driver.getPageSource())
SampleResult.setBytes(driver.getPageSource().length())
删除 org.apache.jmeter.samplers.SampleResult
的导入,因为它作为 pre-defined shortcut
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)");
连接时间和延迟 - 您需要从 Navigation Timing API using WebDriver.executeScript() 函数中获取它,完成后您可以使用
SampleResult.setConnectTime()
和SampleResult.setLatency()
可以使用 WebDriver.getPageSource() 函数获得响应,因此您应该能够执行以下操作:
SampleResult.setResponseData(driver.getPageSource()) SampleResult.setBytes(driver.getPageSource().length())
删除
org.apache.jmeter.samplers.SampleResult
的导入,因为它作为 pre-defined shortcut