2013-05-21 86 views
1

我使用JMeter測試Eclipse-RAP應用程序。
在RAP中,客戶端(瀏覽器中的JavaScript框架)通過基於json的協議與服務器進行通信。在請求之前操作httpsampler的post主體

的消息是這樣的:

{"head":{"requestCounter":3,"uiSessionId":"832834"},"operations":[["set","w1",{"bounds": [0,0,1680,893],"cursorLocation":[1262,-1]}]]} 

正如你看到有存儲在uiSessionId. I extracted this id using a "Regular Expression Extractor" and stored it in a variable named UI_SESSION_ID`一個會話ID。
然後我編輯的原始「帖子正文」記錄的HTTP請求的:

{"head":{"requestCounter":3,"uiSessionId":"${UI_SESSION_ID}"},"operations":[["set","w1",{"bounds": [0,0,1680,893],"cursorLocation":[1262,-1]}]]} 

和它的作品。

但是我必須改變每個HTTP-Request的每個Post-Body可能很多。 一些研究,我想用一個「BeanShell的預處理器」將是正確的事情後,但:

var sampler = ctx.getCurrentSampler(); 

會給我一個HTTPSampler,我沒有找到任何這讓我找回體POST方法,更換會話ID與變量並設置更改後的主體。
的JavaDoc:http://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/HTTPSampler.html

你知道有什麼辦法可以代替uiSessionId與變量,而無需手動更改每一個要求?

回答

0

你不需要。 uiSessionId標題已在里程碑版本中引入,爲RAP中的多個瀏覽器標籤支持做準備,但它已被另一種不再使用此標頭參數的機制所取代。

從RAP 2.1 RC1開始,客戶端現在在URL參數cid中爲每個POST請求附加一個「連接ID」。該參數不會影響負載測試,您不必將其從記錄中刪除。由於每個Jmeter線程都有它自己的HttpSession,所以所有線程都具有相同的cid並不是問題。

此次更改的一個原因是能夠加載測試RAP應用程序,而不存在您一直在努力解決的問題。

相關問題