我有一个JMeter作业,我从中获取XML响应,更新XML,然后将XML返回以更新记录。我有所有部分,除了XML更新部分。
我需要更新XML root / Settings / HasRetry,而不仅仅是" false" to" true",但也直接在其下添加其他节点。订单在此XML中很重要。
关于最佳方法的想法?我试过一个简单的java脚本:
...但是JS在那个XML字符串中的特殊字符的b / c上呕吐。
想法?
答案 0 :(得分:0)
您的脚本中有错误,最后一行应该看起来像vars.put("ResponceData", res);
,因为您当前的实现只是忽略了替换逻辑。
另请注意it is not recommended to use Beanshell for scripting,因为我们鼓励JMeter 3.1用户切换到JSR223 Test Elements和Groovy语言。
Groovy是Java兼容的,因此在大多数情况下有效的Beanshell代码将是一个有效的Groovy代码,但不建议使用像${ResponceData}
这样的JMeter变量引用,因为它会破坏脚本编译功能和性能将是一个大问号所以切换到vars.get('ResponceData')
。
示例值替换值的Groovy代码如下所示:
def str = vars.get('ResponceData')
def res = str.replace(vars.get('findSearch'), vars.get('findReplaceWith'))
vars.put('ResponceData', res)
演示:
请参阅Apache Groovy - Why and How You Should Use It以了解有关JMeter中Groovy脚本的更多信息。