jMeter-XPath提取器不允许BSF后处理器(使用javascript代码)访问多个提取的匹配项
jMeter - XPath Extractor does not let BSF Post Processor (with javascript code) to access multiple extracted matches
我有一个来自服务器(SOAP)的XML响应,其中有多个值。XPath提取所有值并将其存储在内部,如Match_1、Match_2、Match_3等。但我既不能通过BSF后处理器也不能通过粘贴在XML中的JavaScript代码来访问它们。它只是拒绝返回值,然后我这样称呼它们:${Match_1}
。
示例:
响应返回多个contentGroupID
值
调试采样器揭示它们:
- contentGroupID=67
- contentGroupID_1=67
- contentGroupID_2=50
- contentGroupID_3=38
- contentGroupID_4=54
- contentGroupID_5=46
我们需要在下一个请求中使用这些值中的每一个,所以我们在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中添加变量的情况下。
问题是:一个人到底怎么能获得这些神奇的价值观
附言:一切都很好,然后我使用ForEach控制器。但诀窍是,我需要用所有的值发出一个请求,而不是一个接一个地发出多个请求。
在此处找到解决方案:
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中的${array}变量。
故事结束了
相关文章:
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 在数据提取完成之前进行页面渲染
- 是否可以从父类访问子类的属性
- 如何访问fastOpt.js
- 访问JSON对象内部的数组元素
- 从模块内部访问Express装载路径
- 难以访问的JS环境中的语法错误
- 如何从对象的原型方法访问JavaScript对象属性
- 访问json数组中的对象
- 如何使用API从SMTP服务器访问和提取电子邮件
- 如何访问主干集合的提取结果
- CouchDB:访问_design视图或提取文档字段的替代方法是什么
- 使用 Web 应用程序访问本地文件系统并提取文件元数据
- jMeter-XPath提取器不允许BSF后处理器(使用javascript代码)访问多个提取的匹配项
- 从外部源提取数据并获得No'访问控制允许来源'标头存在于请求的资源上