kevin841020 发表于 2012-5-4 11:48:06

请教LR中关联中的“Use # for any digit”的有关问题

本帖最后由 kevin841020 于 2012-5-4 11:49 编辑

列表页面有如下程序源代码:
{name:'id',value:'12384'},{name:'entqualname',value:'XX'};
{name:'id',value:'12484'},{name:'entqualname',value:'XX'};
{name:'id',value:'14444'},{name:'entqualname',value:'XX'};
{name:'id',value:'14434'},{name:'entqualname',value:'XX'};
{name:'id',value:'15584'},{name:'entqualname',value:'XX'};
.
.
.
{name:'id',value:'14584'},{name:'entqualname',value:'XX'};
{name:'id',value:'14654'},{name:'entqualname',value:'XX'};
问题:(操作为在列表中,选择一行数据,进行相关操作)
想在LR中,设置关联,拿到{name:'id',value:' 与'}之间的ID值(即红色字体),利用“Use # for any digit”:
设置左边界{name:'id[#]',value:',右边界},Ord=All
这样,拿到的值只有9个,无法拿到 id以上的ID,问如果是你,如何处理这样的问题?????

我是这样思考的:
1、假如修改左边界为:value:'的话,那么就会把“name:'entqualname',value:'”后面的值也会拿到,所以这样行不通;
1、假如修改左边界为:{name:'id[的话,那么拿到的值为类似“1]',value:'12384”的字符串,通过偏移Save Offset拿把ID拿到手,可是1-9,和10以上的数字长度不固定,也行不通;

各位有没有什么好方法啊????跪求解决方法:dizzy:

云层 发表于 2012-5-4 11:50:00

LB="]',value:'"
RB="'},{name:'entqualname["

kevin841020 发表于 2012-5-4 12:43:57

LB="]',value:'"
RB="'},{name:'entqualname["
云层 发表于 2012-5-4 11:50 http://bbs.51testing.com/images/common/back.gif

:P 非常感谢云层大师的指点,我也看过你的那本LR书哦
除此之外,上面的问题还有其它办法吗?
因为是这样的,源代码里存放上面的东西时,是放在 params = [{name:'id',value:'1484'},{name:'entqualname',value:'XX'}......];中的,里面的各种参数位置不固定,有时候,有些选项顺序会倒过来,如: params = [{name:'entqualname',value:'XX'},{name:'id',value:'1484'}......];
问代码开发员,说是开发软件自动生成的顺序

如果按LB="]',value:'"
RB="'},{name:'entqualname["来查找的话,会漏掉个别顺序颠倒的情况

云层 发表于 2012-5-4 12:59:50

要是你用LR11,那么直接写正则表达式,你会觉得爽YY的

kevin841020 发表于 2012-5-4 13:06:11

要是你用LR11,那么直接写正则表达式,你会觉得爽YY的
云层 发表于 2012-5-4 12:59 http://bbs.51testing.com/images/common/back.gif

呵,你说到这个的时候,我刚看到你新版《性能测试进阶指南- loadrunner 11实战》要上市的贴子,在试读你放出来的章节呢,本人现在也是用LR11.0,正好派上用场,有些新函数不知道。

kevin841020 发表于 2012-5-7 15:52:57

本帖最后由 kevin841020 于 2012-5-7 15:56 编辑

回复 4# 云层

我根据《性能测试进阶指南- loadrunner 11实战》中的LR11新关联函数详解.pdf
使用web_reg_save_param_regexp(
                " ParamName=idnumber",
                "RegExp=name:'id[.*]',value:' (.*)'}",
                "NotFound=warning",
                "Ordinal=ALL",
                SEARCH_FILTERS,
                "Scope=BODY",
                LAST);
查看不到关联内容啊,是不是我有什么地方写错了?


后来我又试了关联其它代码(各{}顺序随机)如:
{name:'select_objs/id',value:'102581'},{name:'pbuildprice',value:'55.000000'},{.....}

1、使用web_reg_save_param_regexp(
                " ParamName=idnumber",
                "RegExp=select_objs[.*]/id',value: '(.*)'}",
                "NotFound=warning",
                "Ordinal=ALL",
                SEARCH_FILTERS,
                "Scope=BODY",
                LAST);
同样查找不出来
2、更改左边界:
web_reg_save_param_regexp(
                " ParamName=idnumber",
                "RegExp=id',value:' (.*)'}",
                "NotFound=warning",
                "Ordinal=ALL",
                SEARCH_FILTERS,
                "Scope=BODY",
                LAST);
能关联出内容了,但内容却是类似这样的东西:102581'},{name:'pbuildprice',value:'55.000000'},{.....}
可能你会说右边界应该设置成'},{name:'pbuildprice,但上面说了{}顺序是随机的。
现在这个问题不知道怎么解决了

云层 发表于 2012-5-7 17:45:27

正则你试一下就知道了,记住()内是你要留下的内容,

kevin841020 发表于 2012-5-8 10:45:56

本帖最后由 kevin841020 于 2012-5-8 10:49 编辑

回复 7# 云层

经重复更改左右边界,发现 .*被[]括住时,就会发生问题,查找失败,如:
1、select_objs[.*]/id',value:' (.*)'}:使左边界匹配错误,关联不到后面的内容;
2、select_objs[(.*)]/id',value:'.*'}:报错误:Error -35054: No substring to be saved in regular expression. Enclose part of the RE in parentheses "()" to save it to the parameter

3、当[]不写出来时,如select_objs.*/id',value:' (.*)'},关联成功。

我不知道[]这个括号有什么特别的,这样的问题能帮我解释一下吗

云层 发表于 2012-5-8 10:50:29

你试试转义掉,用\,应该[]也是正则表达式符号

kevin841020 发表于 2012-5-8 11:06:40

本帖最后由 kevin841020 于 2012-5-8 11:14 编辑

回复 9# 云层

Thank you! 刚百度了一下,[]确实是正则表达式符号,
不过之前使用\转义,试过不管用,所以我才上来问的
另外,这个[]符号,当使用在web_reg_save_param、web_reg_save_param、web_reg_save_param_ex进行普通的关联时(即没用使用正则),完全没有这方面的问题(没有使用\)

zbjie 发表于 2012-5-8 16:47:42

大师今天没上课,我还在等你的新书,是否已经出版了。

metoto 发表于 2012-5-8 20:21:18

mark, LR11的正则我觉得是这个版本的最大亮点之一

bob123654 发表于 2012-5-11 09:02:39

回复 4# 云层


    云层叔叔好XE,:lol
页: [1]
查看完整版本: 请教LR中关联中的“Use # for any digit”的有关问题