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
答案 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可以记录和重放它们,但是当涉及异步执行时 - 你现在不能这样做。解决方法选项位于:
答案 3 :(得分:0)
使用JMeter代理记录采样器后,我遇到了同样的问题。答案在这篇博文上:https://lincolnloop.com/blog/load-testing-jmeter-part-1-getting-started/ - 请参阅Ajax请求部分。
为ajax请求添加HTTP标头管理器,并确保发送X-Requested-With:XMLHttpRequest
标头。