关联函数:web_reg_save_param

一、什么是关联

关联(correlation):脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。也是把脚本中某些写死的数据,转变成动态的数据。
什么内容需要关联:当脚本中的数据每次回放都发生变化时,并且这个动态数据在后面的请求中需要发送给服务器,那么这个内容需要通过关联来询问服务器,获得该数据的变化结果。例如:
1.登录字符串。带有会话 ID 或时间戳等动态数据的登录字符串。
2.日期/时间戳。使用日期或时间戳或者其他用户凭据的任意字符串。
3.常见前缀。后跟字符串的常见前缀,如 SessionID 或 CustomerID

二、web_reg_save_param函数说明

语法:

int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

参数说明:

· ParamName: 存放得到的动态内容的参数名称

· list of Attributes: 其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写

o Notfound: 当在返回信息中找不到要找的内容时应该怎么处理

o Notfound=error: 当在返回信息中找不到要找的内容时,发出一个错误讯息。这是缺省值。

o Notfound=warning: 当在返回信息中找不到要找的内容时,只发出警告,脚本也会继续执行下去不会中断。

o LB( Left Boundary ) : 返回信息的左边界字串。该属性必须有,并且区分大小写。

o RB( Right Boundary ): 返回信息的右边界字串。该属性必须有,并且区分大小写。

o RelFrameID: 相对于URL而言,欲查找的网页的Frame。此属性质可以是All或是数字,该属性可有可无。

o Search : 返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。

o ORD : 说明第几次出现的左边界子串的匹配项才是需要的内容。该属性可有可无,缺省值是1。如为All,则将所有找到的内容储存起来。

o SaveOffset : 当找到匹配项后,从第几个字元开始存储到参数中。该属性不能为负数,缺省值为0。

o SaveLen :当找到匹配项后,偏移量之后的几个字元存储到参数中。缺省值是-1,表示一直到结尾的整个字串都存入参数

三、实例说明

  下面例子实现了登录时获取动态token

vuser_init()
{

    web_reg_find("Search=Body",
         "Text="error_no":"0"",
          "SaveCount=Count",
          LAST);

//  token返回值:{"token":"NjYwMDAxMjFfR0NT.198200f1dd43dc90b379dc861b6c642cb0aa7730e063db124dbf3"}}

//      新版关联函数:web_reg_save_param_regexp();


     web_reg_save_param("token1",
                        "LB="token":"",
                        "RB="",
                        "SEARCH=BODY",
                         LAST);

    web_custom_request("login",    
                       "URL=http://101.101.100.11:8080/TQLEX?Entry=TPServer:action",  // 加载的URL
                       "Method=POST", // 使用HTTP POST 方式提交
                       "Resource=1",  
                       "RecContentType=text/xml",
                       "Referer=",
                       "Mode=HTTP",
                       "EncType=text/xml;charset=utf-8", //编码类型
                       "Body={method:'POST',serverName:'gcs',requestPath:'/trade/user/login',params:{account_content:'{client_id}',password:'123456',input_content:'1'},headers:{User-Agent:'Mozilla/5.0 (Windows NT 6.1; WOW64)',x-forwarded-for:'10.110.7.211'}}",
                       LAST);// 请求体(轨迹信息)

    lr_output_message("token is:%s",lr_eval_string("{token1}"));

    return 0;
}

其他实例参考:http://www.cnblogs.com/Automation_software/p/3482094.html

原文地址:https://www.cnblogs.com/workmore/p/6109888.html