How to execute Ajax requests in JMeter?

时间:2017-01-02 08:17:27

标签: ajax jmeter blazemeter

I want to execute Ajax requests in JMeter. I record my test plan with JMeter and BlazeMeter but none can handle Ajax requests. How can I solve my problem?

Or is there any tool that can send concurrent Ajax requests?

Thanks in advance, M.A

4 个答案:

答案 0 :(得分:4)

默认情况下,Jaxter无法模拟Ajax请求,因为它不处理.js个文件(截至3.1版本)。您必须为AJAX请求显式添加请求(HTTP Samplers)。

使用浏览器的Network标签(F12选项)并按xhr过滤流量,仅显示AJAX请求。在测试计划中需要的位置将这些请求作为HTTP采样器添加到脚本中。

浏览器可以处理.js个文件,因此AJAX请求是从浏览器发送的。当您使用HTTP Test Script Recorder录制脚本时,在使用浏览器进行导航时,即使是AJAX请求(源自js文件)也会被添加/记录到测试计划中。

由于JMeter由于限制而无法处理.js文件,因此如果要构建Test Plan,则使用HTTP Sampler手动添加AJAX请求(除了HTTP Get或Post请求) HTTP Test Script Recorder

注意:如果您使用HTTP Test Script Recorder,则无需手动添加它们,因为它们已记录在测试计划中。

答案 1 :(得分:0)

您可以通过使用JMeter代理

录制http流量来实现此目的

http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf

但它只能重播相同的流量,会话,Cookie会有问题...... 更好的解决方案是使用WebDriver

https://jmeter-plugins.org/wiki/WebDriverTutorial/

https://jmeter-plugins.org/wiki/PluginInstall/

所需的包是https://jmeter-plugins.org/files/packages/jpgc-webdriver-1.4.0.zip

答案 2 :(得分:0)

无法启动比当前在线程组中最初定义的线程更多的线程,该功能被跟踪为Bug 53159。 AJAX请求是"正常" HTTP请求所以JMeter可以记录和重放它们,但是当涉及异步执行时 - 你现在不能这样做。解决方法选项位于:

  1. 使用WebDriver Sampler plugin,以便每个JMeter虚拟用户启动真正的浏览器。警告:这种方式非常耗费资源。
  2. 使用脚本,即JSR223 PostProcessor通过Apache HttpComponents启动AJAX驱动的请求
  3. Develop your custom sampler。您可以使用当前处理嵌入资源的方式作为参考。
  4. 了解详情:How to Load Test AJAX/XHR Enabled Sites With JMeter

答案 3 :(得分:0)

使用JMeter代理记录采样器后,我遇到了同样的问题。答案在这篇博文上:https://lincolnloop.com/blog/load-testing-jmeter-part-1-getting-started/ - 请参阅Ajax请求部分。

为ajax请求添加HTTP标头管理器,并确保发送X-Requested-With:XMLHttpRequest标头。