我正在尝试编写一个JMeter脚本,它在接收到服务器的XML响应后,动态地从中提取一个字符串(删除响应的第一部分)并将其写入文件。
目前我使用Save Response Data
写入ChannelData_UAT_1
(文件名)。一切都很好,它写得很开心。
然后我添加BSF PreProcessor
BEFORE ,然后使用javascript尝试提取字符串。这是一堆XML标签,我希望从“<Markets>
”开始。
我用:
function extract_markets(str)
{
marketIndex = str.indexOf("<Markets");
__log(marketIndex);
length = str.length;
marketString = str.substring(markeIndex, length-1);
return str;
}
vars.put('ChannelData_UAT_1', extract_markets(vars.get('ChannelData_UAT_1')));
据我所知,ChannelData_UAT_1
是数据所在的变量。但是这只在Save Response Data
中提到。但之后我不能这样做,否则它已经写入文件了。
当前的性能是它接收响应并写入文件。没有进行过滤 - 好像我的javascript不存在。
我错过了哪些小或明显的东西?建议?
答案 0 :(得分:4)
我认为问题源于ChannelData_UAT_1
不是变量以及Save Response Data
如何运作的事实。
ChannelData_UAT_1
是文件名,而不是文件的内容。
您需要修改“响应”的内容。您可以使用函数的值替换页面响应的值。
我认为代码看起来像这样:
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.samplers.SampleResult;
prev.setResponseData(extract_markets(vars.get('ChannelData_UAT_1')));
来源: http://www.javadocexamples.com/java_examples/org/apache/jmeter/samplers/SampleResult/