lr 函数--lr_save_string
lr_eval_string 返回脚本中一个参数当前的值
Returns the string argument after evaluating embedded parameters.一般都用在调试脚本时输出参数的值。
lr_save_string ——Saves a null-terminated string to a parameter.
帮助文档里:
char *lr_eval_string( const char *instring );例子:下面的例子使用lr_eval_string来代替参数row_cnt的当前值。使用lr_output_message把这个值输出到输出窗口。lrd_stmt(Csr1, "select count(*) from employee", -1, 1 /*Deferred*/, 2 /*Ora V7*/, 0);lrd_bind_col(Csr1, 1, &COUNT_D1, 0, 0);lrd_exec(Csr1, 0, 0, 0, 0, 0);lrd_save_col(Csr1, 1, 1, 0, "row_cnt");lrd_fetch(Csr1, 1, 1, 0, PrintRow2, 0);lr_output_message("value : %s", lr_eval_string("The row count is: {row_cnt}"));lr_log_message(lr_eval_string("{row_cnt}"));
const char * data="abcd";
char * data1,data2,data3 ;
lr_message("data value: %s",data);
lr_save_string(data,"data1");
lr_message("data1 value: %s",lr_eval_string("{data1}")); lr_convert_string_encoding(data,LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"data2");
lr_message("data2 value : %s",lr_eval_string("{data2}"));
lr_convert_string_encoding这行时,编译不通过,type error in argument 1 to `lr_convert_string_encoding'; found `pointer to const char' expected `pointer to char'
Starting action Action.
data value: abcd
Action.c(): Notify: Saving Parameter "data1 = abcd".
Action.c(): Notify: Parameter Substitution: parameter "data1" = "abcd"
data1 value: abcd
Action.c(): Notify: Saving Parameter "data2 = abcd\x00".
Action.c(): Notify: Parameter Substitution: parameter "data2" = "abcd\x00"
data2 value : abcd
Ending action Action.
问题来了,那这个data参数就是这样定义的,不能改变呢。如果用lr_eval_string函数,
const char * data="abcd";
char * data1,data2,data3 ;
lr_message("data value: %s",data);
lr_convert_string_encoding(lr_eval_string("{data}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"data2");
lr_message("data2 value : %s",lr_eval_string("{data2}"));
运行结果有误:
Starting action Action.
data value: abcd
Action.c(): Warning: The string 'data' with parameter delimiters is not a parameter.
Action.c(): Notify: Saving Parameter "data2 = {data}\x00".
Action.c(): Notify: Parameter Substitution: parameter "data2" = "{data}\x00"
data2 value : {data}
Action.c(): Notify: Saving Parameter "data1 = abcd".
Action.c(): Notify: Parameter Substitution: parameter "data1" = "abcd"
data1 value: abcd
将data保存成一个参数,再对值转换。
const char * data="abcd";
char * data1,data2,data3 ;
lr_message("data value: %s",data);
// lr_convert_string_encoding(lr_eval_string("{data}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"data2");
// lr_message("data2 value : %s",lr_eval_string("{data2}")); lr_save_string(data,"data1");
lr_message("data1 value: %s",lr_eval_string("{data1}"));
lr_convert_string_encoding(lr_eval_string("{data1}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"data3");
lr_message("data3 value : %s",lr_eval_string("{data3}"));
结果:
Starting action Action.
data value: abcd
Action.c(): Notify: Saving Parameter "data1 = abcd".
Action.c(): Notify: Parameter Substitution: parameter "data1" = "abcd"
data1 value: abcd
Action.c(): Notify: Parameter Substitution: parameter "data1" = "abcd"
Action.c(): Notify: Saving Parameter "data3 = abcd\x00".
Action.c(): Notify: Parameter Substitution: parameter "data3" = "abcd\x00"
data3 value : abcd
Ending action Action.
总结:
1)遇到const 取值时,去掉const
2)将const值保存成另一个参数,通过对新值操作。
这里只是简单的使用例子,这里为啥会用到要对参数值转换呢?比如乱码需要转码时。
问题:在对服务器返回值重命名时部分值被去掉了
具体描述:通过关联取值str,str中带%2等字符,在用函数值重命名后的新字符串中的%2没有了。在新脚本中尝试一下。
测试版本:LR12.02
测试代码:自定义字符串、参数列表中取值,分别使用sprintf、lr_save_string函数转换并输出结果
Action()
{
char * str = "sdf%2Fdcdegdfs%2opied";
char file[],file1[]; //对直接定义的字符串重命名
lr_save_string(str,"strnew");
lr_output_message("str value : %s",str);
lr_output_message("strnew value : %s",lr_eval_string("{strnew}")); sprintf(file, "%s", str);
lr_output_message("file value : %s",file); //对参数列表中的值重命名
lr_output_message("value : %s",lr_eval_string("{Pname}"));
lr_save_string(lr_eval_string("{Pname}"),"strnew1");
lr_output_message("strnew1 value : %s",lr_eval_string("{strnew1}"));
sprintf(file1, "%s", lr_eval_string("{Pname}"));
lr_output_message("file1 value : %s",file1); return ;
}
测试结果:
Starting iteration .
Maximum number of concurrent connections per server: [MsgId: MMSG-]
Starting action Action.
Action.c(): str value : sdf%2Fdcdegdfs%2opied
Action.c(): strnew value : sdf%2Fdcdegdfs%2opied
Action.c(): file value : sdf%2Fdcdegdfs%2opied
Action.c(): value : sdf%2Fdcdegdfs%2opied
Action.c(): strnew1 value : sdf%2Fdcdegdfs%2opied
Action.c(): file1 value : sdf%2Fdcdegdfs%2opied
Ending action Action.
Ending iteration .
测试结论:新字符串%2正确显示的,并未被去掉。在后续测试时,这项再注意下。
lr 函数--lr_save_string的更多相关文章
- LR函数基础(一)(二)
LR函数基础(一) 函数用到:web_reg_find(). lr_log_message(). lr_eval_string().strcmp().atoi() Action(){ web_r ...
- LR字符串处理函数-lr_save_string
int lr_save_string( const char *param_value, const char *param_name) 指定字符串保存至参数 Action() { lr_save_s ...
- lr函数之lr_eval_string()函数的使用学习
lr_eval_string() 函数的主要作用:返回脚本中的一个参数当前的值(从参数中取得对应的值,并且转换为一个字符串). 格式:lr_eval_string("{参数名}") ...
- LR函数基础(一)
函数用到:web_reg_find(). lr_log_message(). lr_eval_string().strcmp().atoi() Action(){ web_reg_find(&q ...
- LR函数基础(二)
(一)用到的函数: (1) web_set_option() //重定向设置 (2)web_reg_save_param和custom_request都常于处理参数的动态生成. web_reg_s ...
- LR中的时间戳函数web_save_timestamp_param
以前真没注意过后面看某个群有人说到这个函数一查,还真有,那么处理时间戳就简单很多了,我们经常在各种网站上看到类似于这样的时间戳 51Testing软件测试网"d bLq!uR&am ...
- lr参数与C语言函数参数的区别
C变量不能再lr函数中使用: c变量必须定义在lr函数之前: LR参数可以在LR函数中直接当做字符串使用. LR参数是lr自己封装的一个钟对象, LR参数的表达方式:{ParamName}
- 【笔记】LR录制方式和常用函数
本文为本人复习LR时,笔记整理.以备后续查阅. 注意:录制脚本时,选择不同的协议下录制时设置选项也是不相同的,我们这里介绍的是基于协议web(http/html)录制选项设置. 对于web(http/ ...
- Loadrunner的字符串函数
String Function包括 lr_advance_param 指向参数文件中参数的下一个值. lr_convert_string_encoding 将字符串转换为其他编码. lr_decryp ...
随机推荐
- Hibernate框架笔记03表操作多对多配置
目录 1. 数据库表与表之间的关系 1.1 一对多关系 1.2 多对多关系 1.3 一对一关系[了解] 2. Hibernate的一对多关联映射 2.1 创建一个项目,引入相关jar包 2.2. 创建 ...
- 多线程(3)ThreadPool
使用Thread类已经可以创建并启动线程了,但是随着开启的线程越来越多,线程的创建和终止都需要手动操作,非常繁琐,另一个问题是,开启更多新的线程但是没有用的线程没有及时得到终止的时候,会占用越来越多的 ...
- 下载Dynamics 365 Customer Engagement 工具
微软动态CRM专家罗勇 ,回复312或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 从Dynamics ...
- 滑动和animate以及如何停止动画
又是一天过去了,今天复习了slideDown.slideUp.slideToggle以及animate和stop的用法. <!DOCTYPE html> <html> < ...
- word表格转html后去除冗余代码
word可以另存为html文件,通过这个功能,可以快速实现网页展示word内容,特别是表格的编辑,它包含tr.td.th.rowspan.colspan等内容,直接写比较繁琐. 但word转换过来的h ...
- 从0开始的Python学习001快速上手手册
假设大家已经安装好python的环境了. Windows检查是否可以运行python脚本 Ctrl+R 输入 cmd 在命令行中输入python 如果出现下面结果,我们就可以开始python的学习了. ...
- 微信小程序发红包
背景: 近期一个朋友公司要做活动,活动放在小程序上.小程序开发倒是不难,不过要使用小程序给微信用户发红包,这个就有点麻烦 确定模式: 小程序目前没有发红包接口,要实现的话,只能是模拟红包,即小程序上做 ...
- Docker: Harbor一些小知识
镜像文件上传到私有仓库harbor后,镜像的物理存储位置在哪里? 这些信息记录在docker-compose.yml里,通过观察发现 镜像存储在了宿主机的 volumes: - /data/regis ...
- c#操作SQL Server入门总结
我是一名c#新手.本文只是我是常学习的随笔. 一.下载SQL server软件 听说下载开发板是最好的(开发板如果只是用来学习.研究不算是侵权).在安装的时候,我也遇到了很多问题,在公司的电脑安装第一 ...
- 云数据库PolarDB(一)
一.出现的背景及PolarDB简介 阿里云,中国第一家拥有完整云计算能力的企业. 2015年,在计算界的奥运会Sort Benchmark中,阿里云计算100TB数据排序只用了不到7分钟,把Apach ...