51Testing软件测试论坛

标题: loadrunner关联时,左边界是数组 [打印本页]

作者: wslf    时间: 2010-5-17 16:25
标题: loadrunner关联时,左边界是数组
请教各位大侠一个关于关联时,边界是动态数组的问题,详细如下:

web_reg_save_param("WCSParam_Diff2", "LB= name=\"detailForm_CommonArriveDetail[0].srv_ROW_ID\" value=\"", "RB=\">", LAST);

--以上能取到第一个要关联的id

web_reg_save_param("WCSParam_Diff3", "LB= name=\"detailForm_CommonArriveDetail[1].srv_ROW_ID\" value=\"", "RB=\">", LAST);
----以上能取到第二个要关联的id

那么能不能有一种方法,一次性取出这些id值,然后保存到数组中呢?因为有多个id要取。
作者: suqing    时间: 2010-5-17 16:50
你可以取出后就保存,然后用这个值去做你要做的事情,这个取值可以用循环控制
函数lr_save_string(lr_paramarr_idx("username",1),"name")
给你参考下
作者: suqing    时间: 2010-5-17 16:50
一口气吃不成胖子,分步来
作者: skyzhu    时间: 2010-5-17 17:02
web_reg_save_param  可以直接抓下所有的,里面有个参数ORD = ALL,然后再用偏移位的参数,不要把 [0] [1]等写到左边界里,可以扩大取值的范围,全部取到后再把多余的字符串拿掉。但获取后参数的保存方式会和 默认 ORD=1 有区别

lr_paramarr_idx  是处理获取后参数组的,   9.X 开始才有的,9.X  之前的版本就别指望了,sprintf 的方式再从参数组里拿出来
作者: wslf    时间: 2010-5-17 18:28
再扩大取值范围,不把【0】、【1】写到边界里,就取不到值了,加了ORD = ALL也取不到呢;

suqing的代码段,我还不是很理解,再学习学习,多谢二位。
作者: 云层    时间: 2010-5-17 19:52
用替换符替换一下就行了,前提是数字长度固定,否则把左边界写大点
作者: skyzhu    时间: 2010-5-18 13:44
原帖由 wslf 于 2010-5-17 18:28 发表
再扩大取值范围,不把【0】、【1】写到边界里,就取不到值了,加了ORD = ALL也取不到呢;

suqing的代码段,我还不是很理解,再学习学习,多谢二位。


抓的时候
"LB= name=\"detailForm_CommonArriveDetail" value=\"",
"RB=\">",

然后每个结果 都会在前面多出来 [0].srv_ROW_ID\  这么一段,设法处理掉
原来默认ORD=1取参数是保存在比如 WCSParam_Diff2 ,
用了ORD=ALL以后,参数保存方式 为 WCSParam_Diff2_1   
(第1个,之后的类似,WCSParam_Diff2_2,WCSParam_Diff2_3)
WCSParam_Diff2_count 为总数,但没有 WCSParam_Diff2

2楼说的 lr_paramarr_idx ,因为1个与多个的参数命名不同了
lr_paramarr_idx 可以辅助处理直接取出其中某一个的值
作者: wslf    时间: 2010-6-10 15:34
呵呵,谢谢各位的回答,现在我这样取出这些值了:
web_reg_save_param("chehao",
  "LB/DIG= name=\"detailForm_CommonArriveDetail[#].srv_ROW_ID\" value=\"",
  "RB=\">",
        "ORD=ALL",
        LAST);
可是,当我要打印出取到的第一个值时,怎么不对呢?
sprintf(testhao_1,"{chehao_%d}",1);
lr_output_message("testhao1= %s",lr_eval_string(testhao_1));

运行后的输出是:

Action.c(197): Warning: The string 'chehao_1' with parameter delimiters is not a parameter.
Action.c(197): testhao1= {chehao_1}

这哪里不对码?
作者: PrefTest    时间: 2010-6-10 15:40
sprintf(testhao_1,"{chehao_%d}",1);
lr_output_message("testhao1= %s",lr_eval_string(testhao_1));

这两句有问题,可以换成用lr_paramarr_idx来取值
作者: wslf    时间: 2010-6-10 16:41
呵呵,我看都这么写的啊?
lr_paramarr_idx这个loadrunner 8支持码
作者: 云层    时间: 2010-6-11 08:59
取值的时候要这样写lr_output_message(lr_eval_string("{chehao_1}"));

推荐看日志而不是自己去写代码调试
作者: test163    时间: 2010-6-11 09:18
标题: 学习了
学习了
作者: wslf    时间: 2010-6-11 11:44
55,这样写也不行啊,lr_output_message(lr_eval_string("{chehao_1}"))
也会报一样的错
作者: 云层    时间: 2010-6-11 12:15
语句后的分号




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2