zoukankan      html  css  js  c++  java
  • lr函数之lr_eval_string()函数的使用学习

    lr_eval_string()

    函数的主要作用:返回脚本中的一个参数当前的值(从参数中取得对应的值,并且转换为一个字符串)。

    格式:lr_eval_string("{参数名}");

    例如:lr_eval_string("{parm}");

    返回值类型:char

    由于返回值类型是char类型,所以可以直接使用lr_output_message(lr_eval_string("{parm}"))函数输出到日志中。

    如:lr_output_message(lr_eval_string("{parm}"));

    一般多用在调试脚本时输出参数的值.具体用法如下:
    lr_output_message("The parameter1's value is %s",lr_eval_string("{parameter1}")),其中参数parameter1在之前已经定义了的参数

    lr_log_message(lr_eval_string("{parameter1}"))

      

    改变参数取值的关键在于Select next row和Update value on这两个选项

    select next row包含以下选项:

    Sequential 顺序取值

    Random 随机取值

    Unique 唯一取值

    Same line as 取某个参数的同行

    Update value on 包含以下选项:

    Each iteration 每次迭代更新

    Each occurrence 每次取值更新

    Once 只更新一次

    练习

    编写一个脚本,并以此脚本为练习的实例:

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    parameters的参数值见图

    情况一:Sequential 顺序取值+Each iteration 每次迭代更新

    迭代次数为 1

    结果为:甲

    迭代次数为 2

    结果为:甲 乙

    迭代次数为 3

    结果为:甲 乙 丙

    迭代次数为6

    结果为:甲 乙 丙 丁 戊 

    扩展:

    迭代次数为 1

    Action()
    {
    int i;
    for(i=0;i<3;i++)
    {
    lr_output_message(lr_eval_string("{parameters}"));
    }
    lr_output_message(lr_eval_string("{parameters}"));

    return 0;
    }


    这段执行出的结果为:甲甲甲甲 

    以上脚本将迭代次数修改为2:

    实行结果:甲甲甲甲 乙乙乙乙

    得出的结论:当使用Update value on + Each iteration时,只有出现了Staring iteration 才会触发记录变化,否则取值内容均不会发生变化。

    情况二:Sequential 顺序取值+Each occurrence 每次取值更新

    迭代次数为 1

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    结果为:甲

    迭代次数为 2

    结果为:甲 乙

    迭代次数为 3

    结果为:甲 乙 丙

    迭代次数为6

    结果为:甲 乙 丙 丁 戊

    扩展:

    迭代次数为 1

    Action()
    {
    int i;
    for(i=0;i<3;i++)
    {
    lr_output_message(lr_eval_string("{parameters}"));
    }
    lr_output_message(lr_eval_string("{parameters}"));

    return 0;
    }

    结果为:甲 乙 丙 丁

    迭代次数为 2

    结果为:甲 乙 丙 丁   戊 甲 乙 丙

    得出的结论:Each occurrence 每次取值更新的效果就是,每次取值都会发生变化

    情况三:Sequential 顺序取值+Once 只更新一次

    迭代次数:2

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    结果:甲 甲

    迭代次数:2

    Action()
    {
    int i;
    for(i=0;i<3;i++)
    {
    lr_output_message(lr_eval_string("{parameters}"));
    }
    lr_output_message(lr_eval_string("{parameters}"));

    return 0;
    }

    结果:甲 甲 甲 甲 甲 甲 甲 甲

    得出结论:无论怎么设置迭代或者for循环,取到的{parameters}的值都是“甲”,因为第一次取到的值是“甲”,以后在也不会更新,所以值不变。

    顺序取值下的各种情况

    顺序取值下的各种情况:

    Random取值

    顺序取值的各种方法搞明白后,Random取值(随机取值)就比较简单了,随机取值可以实现在参数列表中随机选择一条记录,将parameters这个参数的Select next row取值方法从sequential改为Random

    Select next row下的Random选项是,参数化的取值情况如下表:

     选择Select next row 下的Unique选项是,参数化取值情况如下表:

     

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    迭代一次:

    1、unique+iteration:

    迭代一次结果:甲

    迭代7次结果:甲 乙 丙 丁 戊 + 两次"When Out Of Values" policy.

     2、unique+Each occurrence:

     3、unique+once

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    迭代一次:

    执行结果:甲

    迭代7次:

    执行结果:甲甲甲甲甲甲甲

    1.参数的赋值和取值

    lr_save_string("hello world","param");
    lr_eval_string("{param}");
    2.变量到参数
    int x;
    x=10;
    lr_save_string(x,"param");
    lr_eval_string("{param}");
    3.变量读参数
    char x[100];
    x="{param}";
    lr_save_string("hello world","param");
    lr_eval_string(x);
    ---------------------

  • 相关阅读:
    页面跳转时,统计数据丢失问题探讨
    JSBridge 知识点
    数据埋点 知识点
    ES6 模块与 CommonJS 模块的差异
    koa 学习资料
    浏览器渲染流程
    Object.create() 的含义:从一个实例对象,生成另一个实例对象
    this、new,容易混淆的地方
    为什么js 的constructor中是无限循环嵌套:Foo.__proto__.constructor.prototype.constructor.prototype.constructor.prototype.xxx ?
    实例对象与 new 命令
  • 原文地址:https://www.cnblogs.com/scarlett-hy/p/10336770.html
Copyright © 2011-2022 走看看