2012-05-14 16 views
3

我使用JMeter創建了一些測試,情況非常簡單,我有一個帶有結果列表的搜索頁面,而且我必須從此結果中檢索一些值,以便在下一個請求中使用。 這些結果大約是350,我不需要全部。我使用RegexExtractor檢索這些結果,它的工作原理(我設置它檢索10個結果),但現在我不知道如何訪問LoopCounter內的結果。 提取器將結果放入名爲Result的變量中。適用於每個控制器的JMeter正則表達式提取器

問題是,我不知道熱建立一個變量的名稱dinamically。我需要使用一些像_p()這樣的函數嗎? 我可以訪問只是把靜態Result_0_g1

我也推杆一個計數器來存儲循環計數到變量指數循環計數器裏面

謝謝

編輯變量:

已解決我要寫:

$ {__ V(結果_ $ {}指數_g1)

+0

由OP給出的解決方案可能在上下文中工作,但它不會處理正則表達式上的任何匹配,並且與jmeter的內置解決方案相比通常是不必要的複雜。 –

+0

...您可以將您的解決方案發布爲答案,並接受它來解決問題 - 如果您確信解決問題。 –

+0

毫米這是在這種情況下的內置解決方案?我已經嘗試過ForEach控制器,但它似乎並不工作 – rascio

回答

5

你必須用函數引用變量:

${__V(Result_${index}_g1) 
+0

您在這種情況下不需要$ {__ V(Result _ $ {index} _g1),而需要$ {__ V(Result_g $ {index}}:如果有多個匹配jmeter,將會爲每個匹配生成特定的變量,你試圖提取的變量名 - 在你的情況Result_g0,Result_g1,...,Result_gN。看看這個:http://stackoverflow.com/q/10626762/993246。 –

0

使用ForEach Controller - 它是專門爲此設計的不正是你想要的。

+0

如果我把匹配號放在正則表達式提取器中,似乎ForEach控制器不工作......問題是我想檢索只是前10個結果 – rascio

+1

使用匹配數-1,這將返回所有匹配並創建組,然後您可以簡單地使用計數器將foreach限制爲10次迭代。從幫助文本引用:「ForEach控制器可以通過使用輸入變量refName_g循環訪問組,也可以通過使用形式爲refName _ $ {C} _g的輸入變量遍歷所有匹配中的所有組,其中C是計數器變量。「 –

1

...只是爲了收藏。
this post見另一種實現方式(案例不使用的ForEach控制器):

ThreadGroup 
    HttpSampler 
     Regex Extractor (variableName = links) 
    WhileController(${__javaScript(${C} < ${links_matchNr})}) 
     HTTPSampler use ${__V(links_${C})} to access the current result 
     Counter (start=1, increment=1, maximum=${links_matchNr}, referenceName=C) 
0

您可以使用ForEach Controller

ThreadGroup 
    YourSampler 
     Regular Expression Extractor (match -1, any template) 
    Foreach controller 
     Counter(Maximum -> ${Result_matchNr} , Rf Name -> index) 
     LinkSamplerUsingParsedData(use -> ${__V(Result_${index}_g1)} 

現在,如果你想要遍歷所有羣體,則需要另外的foreach要做到這一點。你知道哪個組代表什麼價值,你可以用這種方式。

相關問題