2013-06-26 102 views
0

我有一個來自服務器(SOAP)的XML響應,並且我正在獲取多個值。 XPath提取所有值並將它們存儲在內部,如Match_1,Match_2,Match_3等。 但我無法通過BSF後處理器訪問它們,也無法通過粘貼XML的JavaScript代碼訪問它們。它只是拒絕返回值,然後我給他們這樣的地址:${Match_1}jMeter - XPath提取器不允許BSF後處理器(使用JavaScript代碼)訪問多個提取的匹配項

實施例:

響應返回多contentGroupID值。
調試採樣揭示他們:

  • contentGroupID = 67
  • contentGroupID_1 = 67
  • contentGroupID_2 = 50
  • contentGroupID_3 = 38
  • contentGroupID_4 = 54
  • contentGroupID_5 = 46

我們需要你SE每個下單要求這些數值,所以我們裏面添加到位XML代碼,我們需要這些值坐下:

${__javaScript 
(myOutput =''; var names = {}; 
for (var i = 1; i <= ${contentGroupID_matchNr}; i++) 
{names[i] = "${contentGroupID_" + i + "}";} 
for (var j = 1; j <= ${contentGroupID_matchNr}; j++) 
{myOutput = 
myOutput + '<ns8:forContentGroupId><ns2:id>' + names[j] + '</ns2:id></ns8:forContentGroupId>';}, 
myOutput) 
} 

在這裏,我們<ns8:forContentGroupId><ns2:id>' + ids + '</ns2:id></ns8:forContentGroupId>多次將XML與價值觀的一部分,比賽被XPath找到。

但是神奇的是不是發生。請求發送如下:

<ns8:forContentGroupId><ns2:id>${contentGroupID_1}</ns2:id></ns8:forContentGroupId> 
<ns8:forContentGroupId><ns2:id>${contentGroupID_2}</ns2:id></ns8:forContentGroupId> 
<ns8:forContentGroupId><ns2:id>${contentGroupID_3}</ns2:id></ns8:forContentGroupId> 
<ns8:forContentGroupId><ns2:id>${contentGroupID_4}</ns2:id></ns8:forContentGroupId> 
<ns8:forContentGroupId><ns2:id>${contentGroupID_5}</ns2:id></ns8:forContentGroupId> 

如果我用JavaScript代碼設置BSF後處理器並在XML中添加一個變量,情況也會如此。

現在的問題是:地獄怎麼可以訪問這些神奇的價值?

P.S.一切正常,然後我使用ForEach控制器。但訣竅是我需要使用所有值進行單一請求,而不是一個接一個地發出多個請求。

回答

0

實測溶液這裏:

BSF後處理器女巫JavaScript代碼:

var myOutput = ''; 
var names = {}; 
var str; 
var value = 0; 
var match = vars.get("contentGroupID_matchNr"); 
for (var i = 1; i <= match; i++) 
{ 
var n = i.toString(); 
str = 'contentGroupID_' + n; 
value = vars.get(str); 
names[i] = value; 
} 

for (var j = 1; j <= match; j++) { 
myOutput = myOutput +  '<ns8:forContentGroupId><ns2:id>' + names[j] + '</ns2:id></ns8:forContentGroupId>'; 
} 
vars.put("array", myOutput); 

加$ {陣列}內部XML變量。

故事結束! =)

相關問題