关联:
关联函数:web_reg_save_param
1.为什么需要关联。
2.关联的基本用法是哪些。
3.关联函数要去查找哪一个请求的响应要明确。
关联的核心原理:
1.本质:查找。
2.从哪里查找:从响应当中查找。
3.如何查找:通过左右边界查找。
注意点:
1.在请求的前面插入关联函数。因为LR的关联功能是预处理的一个函数,所以一定要放在被查找的请求前面,而且是紧挨着的前面。
2.插入关联函数后,要给双引号进行转义。
操作:
1.插入步骤。Insert-New Step-Services-web_reg_save_param。
2.点击“OK”,打开这个函数的编辑页面。
Parameter name:参数名称。
Left Boundary:左边界。尽可能越短越好,这样比对速度快。但要保证唯一性。
Right Boundary:右边界。
3.在post请求中修改参数。
1.高亮显示的参数表示在参数列表中存在的参数名称,属于静态参数;没有高亮显示的表示动态参数,是根据脚本运行。
关联函数通配符:
Match case:勾上表示支持通配符,不勾选表示不支持。
Use # for any digit:用 # 号来作为任何数字的通配符。默认表示为0-9,如果是两位数字(例:60)就需要 '##' 两个#号来代替。
Use ^ as a wildcard for : 用 ^ 的符合表示任何一个字符。all:表示所有的ASCII码、lowercase:小写字母、uppercase:大写字母。
Binary data:二进制数据。(图形文件)
Relative Frame ID:针对查找的响应里面包含框架页面的一些响应。(框架布局,例:上面是A页面菜单部门,下面是B页面正文部门,左边是C页面导航)
Not Found:设置左右边界查找没有找到任何结果,处理方式默认是直接报错,也可以设置为只报一个警告。报错的时候会停止运行脚本,警告可以继续执行脚本不会终断。
Search in:关联我们所查找的内容。ALL:默认是查找响应的全部内容、Body:也可以默认查找响应的正文、Headers:响应的头、NoResource:非资源类的。就是文本类的。
Save Length:保存长度,自动剪切。比如查询出100个字符,我们只需要50字符。它会自动剪切长度。
Save Offset :从哪里开始剪切,配合Save Length使用。(例:Save Length设置50字符,Save Offset设置0,那就从第0个字符开始,0-50;如果Save Offset设置10,那就从第10个字符开始截取,就是10-60字符串)。
Ignore Redirections:忽略重定向。
Instance:默认不勾选,输出查找的第一个结果。勾选后可编辑序号,顺序输出序号所对应的结果。
☆关联数组:(场景:随机的选择一个板块实现发帖)。
第一步:获取所有板块的编号。想获取关联的所有查询结果,可以修改instance选项,修改为:ALL。
1.Ord变为ALL,就变为一个关联数组了。输出结果就是一个参数数组,参数数组里面存放了很多值。
2.如何获取到参数数组里面的值。例:lr_output_message(lr_eval_string("{test_1}")); (获取到参数数组里面第一个值);lr_output_message(lr_eval_string("{test_2}")); (获取到参数数组里面第二个值)。
第二步:关联数组的三个函数:lr_paramarr_len(返回的是关联数组的个数,获取到数组的长度)、lr_paramarr_idx(输出所关联的值。获取到指定索引所对应的值)、lr_paramarr_random(随机的获取关联数组中的一个值)。
1.循环的输出:
注意点:("test"):test已经不是一个参数了,所以不用加{}。
i<lr_paramarr_len("test"):因为我们不知道有多少个板块,所以我们用这个函数来明确有多少个。
lr_paramarr_idx:调用第一个参数,参数数组的名称(test),第二个索引号(i)。
lr_paramarr_random:随机获取值。
例子:
int i;
for (i=1;i<lr_paramarr_len("test");i++) {
lr_output_message(lr_paramarr_idx("test",i));
// lr_output_message(lr_paramarr_random("test"));
}
//通过上述例子可以把所有板块都找出来。找完之后就可以获取它的值。
第三步:如何把值用到脚本中变为可用的参数。// lr_save_string(保存一个参数。后面接两个参数,第一个是参数值,第二个是参数名称。);// lr_eval_string(获取一个参数)。
例:lr_save_string(lr_paramarr_random("test"),"testid"); 值:lr_paramarr_random("test") 名称:testid
lr_save_string动态的生成了一个参数,这个参数名称叫testid,参数值对应的就是lr_paramarr_random("test")表达式,就是上面随机获取的,这个表达式赋给testid,testid就是一个标准的参数。然后在web_submit_data请求中直接引用{testid}。
总结:
通过设定左右边界,发现响应里面通过左右边界能找出一大堆的值,很多值的左右边界是一样的。通过设定Ord=ALL,形成一个关联数组。获取关联数组里面的值,获取到的值用在脚本中实现场景。