LR中函数的使用

背景:本文总结作者在使用LR时,常用的函数。会持续更新~~~

******  web_reg_save_param获取array的处理

1)不要忘记F1,查看LoadRunner的帮助

2)上代码。这里是要通过找到匹配的userName获取其ID

Action()

{

     int i, result;

     char userIdParam[50];      // 保存正则表达式提取出来的字符串的格式,即变量名

     char userIdParamVal[50];  // 保存上面变量名对应的值

     char userNameParam[50];      

     char userNameParamVal[50];

     char userId;    // 最终要获取的ID的值

     ......   // 中间代码省略

     web_reg_save_param("userIds",

                                              "LB=\"id\":\"",

                                              "RB=\"",

                                              "ORD=ALL",     // 默认取值1,即匹配到的第一个值。这里ALL则是取所有值

                                              "SaveLen=20",  // 单个匹配字符的长度

                                              LAST);

     web_reg_save_param("userNames",

                                              "LB=\"name":\"",

                                              "RB=\"",

                                              "ORD=ALL",

                                              "SaveLen=10",

                                              LAST);

     web_url(......);       // 发送请求

     for(i=1; i<=atoi(lr_eval_string("{userIds_count}")); i++)    // {userIds_count} 这是lr中给出的所匹配字符的长度的变量名

     {  // 这里,因为LR取两个变量时都是顺序取值的,所以可以这样的匹配。即id1对应的是name1。

           sprintf(userNameParam, "{userNames_%d}", i);   // 所取值的变量均以userNames_开头,并从1开始计数

           sprintf(userNameParamVal, "%s", lr_eval_string(userNameParam));  // 把变量对应的值取出,赋值给变量   

           result = strcmp(lr_eval_string(userNameParamVal), lr_eval_string("John"));  // 与期望的名字作对比

           if (result == 0)

           {

                sprintf(userIdParam, "{userIds_%d}", i);

                sprintf(userIdParamVal, "%s", lr_eval_string(userIdParam));

                lr_save_string(userIdParamVal, "userId");     // 将期望的值保存到变量中

                break;

           };

      } 

     return 0; 

}

****** LR中获取当前系统时间的方法

参考: https://www.cnblogs.com/yezhaohui/p/3448618.html

PS:感谢这位作者的分享,这里就不再占用篇幅再写一遍啦~~~

****** LR中添加Header信息

web_add_header("X-Requested-With", "XMLHttpRequest");    // 这样添加头部信息只对最近的一个请求有效。

web_add_auto_header("X-Requested-With", "XMLHttpRequest");   // 这样添加头部信息会对其后面的所有请求有效。

****** LR中获取到的字符串长度较长时

web_set_max_html_param_len("1024");      // 使用场景有:web_reg_save_param()获取到长度较长字符串时。则在其前面添加此函数

项目中有遇到一些字符串长度超长,所以这里“1024”可以替换成更大的值,例如,50000

****** LR中请求和响应中的乱码处理

1) 用于request中的乱码

char name[20];

lr_convert_string_encoding(lr_eval_string("测试"), LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8, "name");

lr_output_message("output string is %s", lr_eval_string("{name}"));

2) 用于response中的乱码

char result[20];

 web_reg_save_param("str",  
                                         "LB=",  
                                         "RB=",   
                                         LAST);     // 提取字符串
  web_submit_data(...);    // 请求省略

  lr_convert_string_encoding(lr_eval_string("{str}"), "UTF-8","gb2312","result");
  lr_output_message(lr_eval_string("{result}"));

****** web_reg_save_param_regexp()

该函数之前一直没有找到,原来是因为用的LR11没有打patch包,在LR11+Patch4中,就有该函数了。其使用可以参考:

https://blog.csdn.net/testingstar/article/details/78023526

http://tech.it168.com/a2015/0909/1760/000001760623_all.shtml

web_reg_save_param_regexp("ParamName=param",
                          "RegExp=\"key\":[\\s\\S]*\"value(.*)\"",
                          "Ordinal=1",
                          SEARCH_FILTERS,
                          LAST);

其中,[\\s\\S]*是正则表达式中的任意替换,(.*)则是对需要取的值的替换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值