51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8386|回复: 15
打印 上一主题 下一主题

[原创] 关于lr_xml_get_values返回个数的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-11 20:17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有这样一段代码

char *xml_input =
     "<employee>"
        "<name>Mike</name>"
        "<name>John</name>"
        "<name>Lie</name>"
     "</employee>";

Action() {
         lr_save_string(xml_input, "XML_Input_Param");
         lr_xml_get_values("XML={XML_Input_Param}",
                        "ValueParam=Result",
                        "Query=/employee/name",
                        "SelectAll=Yes",
                        LAST);
}

因为在lr_xml_get_values中指定了SelectAll=Yes,所以Result_1 = Mike, Result_2 = John, Result_3 = Lie
lr_xml_get_values返回值会是3,也就是说匹配到了3个值


问题是:
我现在想输出最后一个结果,该怎么办(由于xml_input不是固定的,结果未必匹配到3个),
我知道肯定不能这么写lr_output_message(lr_eval_string("{Result_#}"));
那该怎么写呢? 谢谢大家!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    2#
    发表于 2010-8-11 20:27:03 | 只看该作者
    先判断有几个,然后取最后一个就行了嘛
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2010-8-11 20:27:32 | 只看该作者
    不知说清楚没有,其是我就是想遍历下匹配出来的Result
    自己顶顶~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2010-8-11 20:35:19 | 只看该作者

    回复 2# 的帖子

    比如说:
    len =  lr_xml_get_values("XML={XML_Input_Param}",
                            "ValueParam=Result",
                            "Query=/employee/name",
                            "SelectAll=Yes",
                            LAST);
    len中存的就是有多少个
    那我总不能写成
    lr_output_message(lr_eval_string("{Result_len}"))吧?

    我该怎么写呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2010-8-11 20:39:33 | 只看该作者
    因为参数这个东西不是数组,如果是数组的话,可以
    int str[10];
    ...
    for (int i = 0; i < 10; i ++)
        printf("%d", str);

    由于这个是参数,所以无法写成

    for (int i = 0; i < 10; i ++)
        printf("%d", Result_i);

    那我要遍历的话该怎么做呢?谢谢了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-8-11 21:34:12 | 只看该作者
    int number;
            char Result[10];
        char *xml_input =
         "<employee>"
            "<name>Mike</name>"
            "<name>John</name>"
            "<name>Lie</name>"
         "</employee>";


             lr_save_string(xml_input, "XML_Input_Param");
             number = lr_xml_get_values("XML={XML_Input_Param}",
                            "ValueParam=Result",
                            "Query=/employee/name",
                            "SelectAll=Yes",
                            LAST);

                     lr_output_message("the number is: %d",number);

                     sprintf(Result,"{Result_%d}",number);

                     lr_output_message("the last result is: %s",lr_eval_string(Result));

    定义一个数组,最好足够长,然后用sprintf函数就成了,以前的项目里我是这样做的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2010-8-12 09:17:00 | 只看该作者

    回复 6# 的帖子

    非常感谢,这种方法确实很好用!

    自己也找了些资料,也可以通过下面的方式解决(纯LoadRunner方法)大家可以查查lr_paramarr_idx函数和相关函数
             len = lr_xml_get_values("XML={XML_Input_Param}",
                                            "ValueParam=Result",
                                            "Query=/employee/name",
                                            "SelectAll=Yes",
                                            LAST);
             for (i = 1; i <= len; i ++) {
                     lr_output_message(lr_paramarr_idx("Result", i));
             }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-8-12 09:32:43 | 只看该作者

    回复 7# 的帖子

    lr_paramarr_idx  应该只有9.x 以上的版本才有的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-8-12 10:12:39 | 只看该作者

    回复 7# 的帖子

    这个函数挺好的,以前没注意到,学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2010-8-12 11:34:48 | 只看该作者

    回复 8# 的帖子

    确实是只到9.x上的版本才有
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-26 13:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2010-8-12 22:34:20 | 只看该作者

    慎用lr_xml_*

    发现 lr_xml_* 函数本身比较占资源,可能影响测试结果:
    http://hi.baidu.com/higkoo/blog/ ... f0bff699250ad7.html

    然后我用C实现了一套字符串查找的函数:
    http://hi.baidu.com/higkoo/blog/ ... f8d6868c5430b1.html
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2010-8-24 10:01:16 | 只看该作者
    搬个板凳等
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-5-16 14:33:47 | 只看该作者
    好象这样可以,lr_output_message(lr_eval_string("{Result_3}"));
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-2 12:41
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2014-12-9 12:55:56 | 只看该作者
    学习了、、、
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-2 12:41
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    15#
    发表于 2014-12-9 12:59:47 | 只看该作者
    楼主 知道怎么随机取: "ValueParam=Result"里面的值吗?lr_paramarr_dondom好像不行啊!

    我想的办法是:取一个随机数,然后用:     lr_output_message(lr_paramarr_idx("Result", i));
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-12-2 12:41
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    16#
    发表于 2014-12-9 13:04:49 | 只看该作者
    楼主 知道怎么随机取: "ValueParam=Result"里面的值吗?lr_paramarr_random好像不行啊!

    lr_paramarr_random函数为什么不行啊?
    报错信息:Action.c(59): Warning: The string 'Result_count' with parameter delimiters is not a parameter.  Result是我xml关联出来的参数数组名。

    我想的办法是:取一个随机数,然后用:     lr_output_message(lr_paramarr_idx("Result", i));
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-7 21:15 , Processed in 0.067733 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表