同样的,英文好的同学请移驾ForEach Controller
ForEach controller 是用来遍历集合的,比如 XPATH Extractor 或者 正则表达式 Extractor 解析出来的集合。ForEach做的事情大致有2件,
- 取得集合
- 遍历集合,将每一个值应用到 ForEach 下面的 Smapler 或者 controller 中去。
来看一个例子,我们要访问百度首页,取得首页所有的链接,然后访问这些链接。我们要做的是:
- 用一个 http sample 访问 http://www.baidu.com
- 在这个 sample 下添加一个正则表达式提取器,使用 <a href=”([^”]+)” 提取所有的 link 的 href 值。
- 用 ForEach Controller 遍历第2步提取出来的 href 值,然后一一访问。
JMeter 脚本结构大致如下,
先来看正则表达式提取器
注意这个引用名称 inputVar, 提取出来的所有匹配值都会放在这个变量里,事实上 inputVar 相当于一个 set 了。然后我们在紧跟的 ForEach 里面使用这个变量。
可以看到,在 ForEach 里,我们将之前的 inputVar 设置为输入变量。然后用 returnVar 做为输出。 这其实就类似于 JAVA 里面的 ForEach。
for(Object returnVar : inputVar) {
//process
}
这个 process 过程就是下图所示: