微信号:grzlwx

介绍:光荣之路官方资讯

如何在 LoadRunner 脚本中做关联 (Correlation)(三)

2015-07-19 22:04 光荣之路

关于 web_reg_save_param 函数

对于关联(correlation)来说,web_reg_save_param是最重要的一个函数,其功能是在下载的网页内容中,透过设定的边界字符串,找出特定的数据并将其储存在一个参数中,以供后续脚本使用。

接下来将针对web_reg_save_param做比较详细的说明。

Service and registration type function

web_reg_save_param是一个Service function。service function主要是用来完成一些特殊的工作的,如关联、设定proxy、提供认证信息等,当其作用时,不会对网页的内容做任何的修改。

web_reg_save_param同时也是一个registration type function (只要函数名称中包含_reg_的字眼,表示其为registration type function)。registration type function意味着其真正作用的时机是在下一个action function完成时执行的。举例来说,当某个web_url执行时所接收到的网页内容中包含了要做关联的动态数据,则必须将web_reg_save_param放在此web_url之前,则web_reg_save_param会在web_url执行完毕后,也就是网页内容都下载完后,再执行web_reg_save_param找寻要做关联的动态数据并建立参数。

所以要记住一点,要使用registration type function时,要注意其放置的位置必须在要作用的action function之前。

语法

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。属性值不分大小写,例如 Search=all。以下将详细说明每个属性值的意义:

  • Notfound:指定当找不到要找的动态数据时该怎么处置。

    • Notfound=error:当找不到动态数据时,发出一个错误讯息。假如没设定此属性,此为LoadRunner的默认值。

    • Notfound=warning:当找不到动态数据时,不发出错误讯息,只发出警告,脚本也会继续执行下去不会中断。在对角本除错时,可以使用此属性值。

  • LB:动态数据的左边界字符串。此属性质是必须要有的,而且区分大小写。

  • RB:动态数据的右边界字符串。此属性质是必须要有的,而且区分大小写。

  • RelFrameID:相对于URL而言,欲搜寻的网页的Frame。此属性质可以是All或是数字,而且可有可无。

  • Search:搜寻的范围。可以是Headers(只搜寻headers)、Body(只搜寻body部分,不搜寻header)、Noresource(只搜寻body部分,不搜寻header与resource)或是All(搜寻全部范围,此为默认值)。此属性质可有可无。

  • ORD:指明从第几次出现的左边界开始才是要撷取的数据。此属性质可有可无,默认值是1。假如值为All,则所有找到符合的数据会储存在数组中。

  • SaveOffset:当找到符合的动态数据时,从第几个字符开始才开始储存到参数中。此属性质不可为负数,其默认值为0。

  • Convert:可能的值有二种:

    • HTML_TO_URL: 将HTML-encoded数据转成URL-encoded数据格式

    • HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式

SaveLen:从offect开始算起,到指定的长度内的字符串,才储存到参数中。此参数可有可无,默认值是-1,表示储存到结尾整个字符串。

范例

web_reg_save_param("A", "LB/ic=<a href=", "RB='>", "Ord=All", LAST);nner会搜寻网页中所有以「<a href=」开头,且以「’>」结束,当中包含的字符串,并且储存在「A」参数中。

Tips and Tricks

以下提供一些关联的常见问题:

  • 如何打印出参数值?
    lr_output_message这二个函数来做到。例如:

lr_output_message(“Value Captured = %s”, lr_eval_string(“{ParameterName}”));

lr_eval_string与lr_output_message函数的使用说明请参考LoadRunner Online Function Reference。

  • 在脚本的data目录下找不到路制时的快照(snapshot)
    造成在脚本的data目录下找不到路制时的快照(snapshot)的可能原因如下:

    • 脚本是由VuGen 6.02或更早的版本所录制的

    • 汇入的Action不会包含快照(snapshot)的档案

    • 脚本是储存在只读的目录下,早成VuGen无法储存执行时撷取的快照(snapshot)

    • 某些步骤并不会产生快照(snapshot),如浏览某个资源

    • 快照(snapshot)功能被取消
      【Tools】>【General options】>【Correlation】tab >【Save correlation information during replay】

  • 开启WinDiff时出现「File no longer available」的错误讯息
    WinDiff这个工具有些限制,无法开启包含空格符的目录或是脚本,所以建议命名时不要使用空格符,并且尽可能将名称取短一点。

录制时突然跳出【Correlation warning】对话窗口

当你有勾选自动关联的【Issue a popup message and let me decide online】选项,当VuGen发现有可能要做关联的数据时,就会跳出【Correlation warning】的窗口,询问你要做关联(Correlation in script)还是要忽略(Ignore)。
另外你也可以勾选【Perform correlation in script】,让VuGen自动作关联,不会再跳出询问窗口。
或是勾选【Disable correlation engine】,关闭自动关联的功能。



如何手动启动「Scan action for correlation」的功能

要手动启动「Scan action for correlation」的功能,请先执行脚本一次后,点选【Vuser】>【Scan Action for Correlation】。


执行完脚本后并未出现【Scan Action for Correlation】窗口

要启用【Scan Action for Correlation】功能,请点选【Tools】>【General options】>【Correlation】tab,勾选【Show Scan for correlation popup after replay of Vuser】选项。


(作者:恋恋冬季 来源:http://www.blogjava.net/jessica/archive/2006/08/02/61310.html)

 
            
 
            
 
            
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           
 
           

一字一句当思来之不易,感谢作者,传播测试知识、技能与正能量!

光荣之路软件测试培训

官网:http://www.gloryroad.cn/

微信公众号:gloryroadtrain

性能测试QQ群:415987441
软件测试招聘QQ群: 203715128
自动化3群QQ: 371211499


 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 《地球漫游指南》:如何同地球人伴侣一起生活——节日/纪念日 程序员学哲学 提高转化率!引导用户授权APP发送通知的实战技巧 【干货合集】大流量与高并发:数据库、架构与实践技巧 Xcode常见报错及解决办法