SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*/
LAST);
IC和/BIN在web_reg_save_param都是有的
/RE是web_reg_save_param_ex才有,意思是左右边界值可以使用正则表达式。
"RB/RE=\"name=\"chkItem_......\"\r\n 中的......就表示任意字符了。
Scope表示搜索的范围
RequestUrl表示指定的请求(如点击一个按钮,可能有几个请求链接组成的,通过这个属性可以缩小范围)
三、边录边关联---RulesCorrelation
RulesCorrelation
启用系统默认提供的自动关联设置,在录制过程中VuGen会根据已经制定的规则,自动找出要关联的值。
内建关联(Bulit–in Correlation)
针对常用的一些应用系统,如oracle、peopleSoft、Siebel等,内建关联规则,这些应用系统可能会有一种以上的关联规则。
在【RecordingOptions】>【Correlation】中启用关联规则,则当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。
如图:
四、用户自定义关联规则(User-definedRulesCorrelation)
在【RecordingOptions】>【Correlation】建立新的关联规则。
点击【newApplication】按钮建立关联,然后在这个应用下点击“Newrule”按钮添加对应的关联规则。
以录制登录Webtours订票系统为例:
第一步,在RecordingOptions-Correlation中建立关联规则,单击NewApplication按钮,新建一个叫做lrwebtours的应用,然后在这个规则上单击NewRule按钮新建一个规则,名叫usersessionid,为该规则填写左右规则,左边界为userSessionValue=,右边界为>,确定后保存。
如下图:
2.开始录制webtours订票系统登录业务。
3.录制完订票系统登录业务脚本后,可以发现系统已经自动按照规则生成了关联函数,运行脚本直接通过。
手动关联是关联应用的最有效手段,通过函数web_reg_save_param()进行关联。
web_reg_save_param()将想要的字符串保存到一个参数中。
web_reg_save_param函数主要根据需要做关联的动态数据前面和后面固定字符串来识别、提取动态数据,所以在关联时需要找出动态数据的左、右边界字符串。
Web_reg_save_param函数格式:
web_reg_save_param(constchar*ParamName,,LAST
参数名
参数说明
ParamName
存放动态数据的参数名称
ListofArrtributes
其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、Saveoffset、Convert以及SaveLen
NOTfound
指定当找不到要找的动态数据时该怎么处置。
notfound=error:
当找不到动态数据时,发出一个错误信息,此为loadrunner的默认值。
notfound=warning:
当找到动态数据时,不发出错误信息,只发出警告,脚本也会继续执行下去不会中断。
LB
动态数据的左边界字符串,该参数为必选参数,而且区分大小写。
要忽略大小写,请在边界之后添加“/IC”。
如果在边界之后指定“/BIN”,则指定为二进制数据
RB
动态数据的右边界字符串,该参数为必选参数,而且区分大小写。
要忽略大小写,请在边界之后添加“/IC”。
如果在边界之后指定“/BIN”,则指定为二进制数据
ORD
此可选参数表示匹配的序号或出现的次数,该参数为必选参数,默认值是1。
如果指定“All”,是将所有找到的动态变量保存到数组中。
Search
搜索的范围,可以是headers(只搜寻页眉)、body(只搜寻正文部分,不搜寻页眉)、Noresource(只搜寻正文部分,不搜寻页眉与resource部分)或是all(搜寻全部范围),该参数为可选参数
RelFrameID
与请求的 URL 相关的 HTML 页的框架结构层次级别。
可以为 ALL 或数字
Saveoffset
设置关联的内容偏移量,从第几位开始进行关联操作。
此属性值不可为负数,默认是0
Convert
可能的值有两种。
HTML_TO_URL:
将HTML-encoded数据转成URL-encoded数据格式。
HTML_TO_TEXT:
将HTML-ecncoded数据转成纯文字数据格式。
Savelength
关联出来的内容所需要保存的长度。
从offset开始算起,到指定长度内的字符串,才储存到参数中,该参数为可选参数,默认值是-1,表示储存到结尾整个字符串。
关联函数的注意事项:
1.关联函数是一个注册函数,必须写在请求前,否则就会提示无法获得关联结果的错误。
2.保存参数最大不能超过256字节,如果超过256字节请使用intweb_set_max_html_param_len(constchar*length)函数扩大参数保存范围。
例如:
web_set_max_html_param_len(“1024”);//扩大参数最大保存范围为1024字节。
3.如果输入的内容里面有双引号,那么需要通过转义符来进行处理,转义符为\。
Web_reg_save_param(“param”,“LB=\”左边界”,“RB=”,LAST);
4.关联函数的作用一种规则将服务器的返回保存到一个参数中,所以为查看参数的内容,应勾选参数取值的Extendedlog日志的三个选项。
运行脚本查看Replylog日志,会看到蓝色参数值罗列出来”Notify:
savingParameter=“,后面都是被关联到的服务器返回关联值。
5.动态数据需要关联的服务器返回信息一般都保存在HTML正文中。
所以关联函数中设置将searchin=Noresource,也就是只需要关联HTML、XML等资源。
6.修改关联函数:
1.直接在代码上直接修改,2切换到tree模式,双击关联函数进行修改。
7.整个HTTP请求分为两段,一段是开头的HTTP头数据包,叫做header,另外一段就是HTML页面,叫做body。
8.关联函数转义符:
转义符号
说明
\b
Backspace 键
\f
换页
\n
换行
\r
回车
\t
水平制表符
\v
垂直制表符
\’
单引号标记
\’’
双引号标记
\\
反斜杠
\?
文本问号
关联操作步骤:
第一步:
录制两份相同的业务流程的脚本,输入的数据要相同
第二步:
用winDiff工具,找出两份脚本之间不同之处,确定需要关联的动态数据,在请求返回中找到动态数据的左右边界
第三步:
用web_reg_save_param()函数手动建立关联,将脚本中用到关联的数据参数化,将关联的值提供给后续请求页面使用。
以录制登录Webtours系统为例:
1.录制两份相同的登录WebTours网站脚本
2.用WinDiff工具,找出两份脚本之间的不同,也就是需要关联的数据。
(1)用lr打开第二份脚本,依次选择[tools]>[comparewithvuser…]项,在弹出对话框中选择第一份脚本。
(2)用lr调用WinDiff工具,显示两份脚本,WinDiff工具会以一整行黄色标示显示有差异的脚本代码行。
可以看到有三处不一样,第一处是userSession,另外二外是点击按钮时的x,y坐标。
lr_think_time思考时间不同,可以忽略。
如图:
(3)在Generationlog中打开[find]对话框,粘贴userSession的值,查找在Generationlog出现的位置。
如果在GenerationLog中找到了要找的数据,这时要确认是从服务器端传送过来的数据。
如图:
如果出现在$$$$$$RequestHeaderForTransactionWithId3Ended$$$$$$这个部分,那证明是客户端发出的请求,这里是不需要做关联的
一般做的关联都是出现在******ResponseHeaderForTransactionWithId7******和******ResponseBodyForTransactionWithId7******中的部分。
3.确认插入关联的位置
关联函数写到发出请求的函数之前,我们将关联函数插入在Webtours登录页面:
4.插入关联函数
(1)通过设置左右边界字符串,找出变化的数据(即需要做关联的数据)并将其储存在一个参数中,以供后续脚本使用。
我们设置登录webtours脚本userSession的左边界为userSessionvalue=,右边界为>,search=body,ord=3,如图:
(2)插入关联函数。
1.右键选择“Insert-NewStep”在弹出的“addstep”对话框的“findfunction”中输入
在“Parametername”中输入关联函数的名称“usersessionid”
在“LeftBoundary”中输入“userSessionvalue=”
在“RightBoundary”中输入“>”
在“Searchin”中选择“body”
在“Instance”输入“3”
点击“ok”即可。
如图:
5.将脚本中有用到关联的数据,用参数代替将原来服务器返回的userSession动态值使用{usersessionid}来替换:
6.验证关联的正确性。
回放脚本,出现vuser_init.c(12):
Registeringweb_reg_save_paramwassuccessful[MsgId:
MMSG-26390]信息说明关联成功,也可以用打印函数lr_log_message把将得内容存入日志用于检查关联是否成功。
如图:
lr_log_message(“getvalue:
%s”,lr_eval_string(“{usersessionid}”));