51Testing软件测试论坛
标题:
关于lr_xml_get_values返回个数的问题
[打印本页]
作者:
keome
时间:
2010-8-11 20:17
标题:
关于lr_xml_get_values返回个数的问题
有这样一段代码
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_#}"));
那该怎么写呢? 谢谢大家!
作者:
msnshow
时间:
2010-8-11 20:27
先判断有几个,然后取最后一个就行了嘛
作者:
keome
时间:
2010-8-11 20:27
不知说清楚没有,其是我就是想遍历下匹配出来的Result
自己顶顶~
作者:
keome
时间:
2010-8-11 20:35
标题:
回复 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}"))吧?
我该怎么写呢?
作者:
keome
时间:
2010-8-11 20:39
因为参数这个东西不是数组,如果是数组的话,可以
int str[10];
...
for (int i = 0; i < 10; i ++)
printf("%d", str
);
由于这个是参数,所以无法写成
for (int i = 0; i < 10; i ++)
printf("%d", Result_i);
那我要遍历的话该怎么做呢?谢谢了
作者:
dionysus
时间:
2010-8-11 21:34
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函数就成了,以前的项目里我是这样做的。
作者:
keome
时间:
2010-8-12 09:17
标题:
回复 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));
}
作者:
skyzhu
时间:
2010-8-12 09:32
标题:
回复 7# 的帖子
lr_paramarr_idx 应该只有9.x 以上的版本才有的
作者:
dionysus
时间:
2010-8-12 10:12
标题:
回复 7# 的帖子
这个函数挺好的,以前没注意到,学习了
作者:
keome
时间:
2010-8-12 11:34
标题:
回复 8# 的帖子
确实是只到9.x上的版本才有
作者:
higkoo
时间:
2010-8-12 22:34
标题:
慎用lr_xml_*
发现 lr_xml_* 函数本身比较占资源,可能影响测试结果:
http://hi.baidu.com/higkoo/blog/ ... f0bff699250ad7.html
然后我用C实现了一套字符串查找的函数:
http://hi.baidu.com/higkoo/blog/ ... f8d6868c5430b1.html
作者:
darling_god
时间:
2010-8-24 10:01
搬个板凳等
作者:
daiheyun
时间:
2011-5-16 14:33
好象这样可以,lr_output_message(lr_eval_string("{Result_3}"));
作者:
英英
时间:
2014-12-9 12:55
学习了、、、
作者:
英英
时间:
2014-12-9 12:59
楼主 知道怎么随机取: "ValueParam=Result"里面的值吗?lr_paramarr_dondom好像不行啊!
我想的办法是:取一个随机数,然后用: lr_output_message(lr_paramarr_idx("Result", i));
作者:
英英
时间:
2014-12-9 13:04
楼主 知道怎么随机取: "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));
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2