2017-01-02 394 views
3

我想在JMeter中执行Ajax请求。我用JMeter和BlazeMeter记录了我的测试计划,但没有人能处理Ajax请求。我如何解决我的问题?如何在JMeter中执行Ajax请求?

或者是否有任何工具可以发送并发的Ajax请求?

由于提前, M.A

回答

2

默认情况下,Ajax请求不能被JMeter的模拟,因为它不处理.js文件(3.1版本以上)。您必须为AJAX请求明确添加请求(HTTP采样器)。

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


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

由于JMeter的无法处理.js文件由于限制,手动添加AJAX请求使用HTTP取样(不过HTTP GET或POST请求),如果你不HTTP Test Script Recorder建设Test Plan

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

+0

JMeter可以记录Js和xhr部分中浏览器的Network选项卡上显示的所有JS请求,但是当我播放测试计划时,JS请求将不会生效,并且Js请求不会生效。 –

+0

是的,这是目前的预期行为。 JMeter不处理'js'文件,所以源于'js'文件的请求永远不会被发送。这是JMeter的一个已知限制。您必须使用HTTP采样器为他们明确添加请求。 –

+0

我对我的JS请求使用了采样器/ HTTP请求。换句话说,我右键单击采样器并选择HTTP请求,然后将路径添加到路径字段中的JS文件。但它不处理JS文件。它不是HTTP采样器?我使用HTTP采样器的方式错误吗? –

0

你可以做,通过记录与JMeter的代理服务器的HTTP流量

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

但也仅仅是能够重现相同的业务,可以为会话,饼干...... 更好的方法是有问题的使用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

+0

我一步步尝试了这个解决方案,但WebDriver取样器给了我错误。在日志查看器中出现此错误:测试失败! java.lang.NoClassDefFoundError:org/openqa/selenium/os/Kernel32 –

+0

你有没有添加需要的库?我通过安装**“Selenium/WebDriver Support”**插件更新了链接 –

+0

,这必须将selenium-remote-driver-x.xx.x.jar和其他jar文件复制到JMETER_HOME/lib文件夹 –

0

由于不能启动线程组中最初定义的线程数量,因此当前不支持该功能,因此该功能被追踪为Bug 53159。 AJAX请求是“正常的”HTTP请求,因此JMeter可以记录并重放它们,但是当涉及到异步执行时 - 您目前无法做到这一点。解决方法选项在:

  1. 使用WebDriver Sampler plugin因此每个JMeter虚拟用户都会启动一个真正的浏览器。警告:这种方式非常耗费资源。
  2. 使用脚本,即JSR223 PostProcessor通过Apache HttpComponents
  3. Develop your custom sampler开球AJAX驱动的请求。您可以使用当前处理嵌入式资源的方式作为参考。

了解更多:How to Load Test AJAX/XHR Enabled Sites With JMeter