2017-01-02 339 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