LoadRunner中的七个常用函数
Check Functions (检查函数):
1. 1.1 int web_reg_find (const char *attribute_list, LAST)
Description:
1). web_reg_find属于注册函数,注册一个在web页面中搜索文本字符串的请求,在接下来Action(象web_url)类函数中执行搜索。
2)、通过查找期望的字符是否存在来验证是否返回了期望的页面。例如,通过查找“Welcome”来检查主页是否完全打开了。也可以查找“Error”检查浏览器是否发生错误。还可以使用此函数注册一个请求来统计特定字符串出现的次数。 如果检查失败,在接下来的Action类的函数中会报告错误。此函数仅仅注册请求,并不执行。函数的返回值只表明注册是否成功,并不表示检查的结果。
3)、此函数不仅能够查找text,还能查找到围绕着text的strings。不要同时指定text和前缀后缀。
4)、此函数在HTML-based和URL-based的脚本中都可以使用。此函数是在所请求内容到达之前注册搜索请求的,所以当所请求内容一到达后就会执行搜索,产生的脚本比较高效。
Attributes:
> Text or TextPfx and TextSfx 其中之一是必须写的。要忽略大小写,请在边界后面添加 “/IC” ;(下面几项都是可选的)
> Search:查找的范围可以是Headers、Body、Noresource或ALL,默认是BODY;
> SaveCount:找到匹配的个数;
> Fail:检查失败的条件的操作方法(即设置检查失败的发生条件),其值为Found或NotFound;
> ID:用于在log中标识检查点的,与函数同行,便于在日志文件中查看到检查点函数;
Note:
1< 当在此函数中,查找的Text=“中文”时,LR如果报错,可以尝试清除此选项:Recording Options--Advanced--support charset中的UTF-8。
2< web_reg_find 只在其之后的一个Action类函数中执行搜索。
3< 当Fail=” NotFound” 若没有找到check的字符串,脚本将FAIL,并且停止执行下去;当Fail=” Found” 则为找到check的字符串,脚本将FAIL,并且停止执行下去。
4< 此函数本身是匹配大小写的,用这样的格式表示忽略大小写:”Text/IC=Hello” 。
For example:
参见脚本【web_reg_find】
1.2 int web_global_verification (, LAST )
Description:
1).注册一个请求,以在所有后续操作函数返回的网页中搜索指定的文本字符串。这与函数web_reg_find不同,后者只为下一个操作函数注册请求。可以搜索页面的正文、头、HTML代码或全部内容。
2).在检测一些应用程序级别(不通过http状态码来表现)的错误时,web_global_verification是非常有用的。如果要定位通过HTTP状态码表现的错误时,使用web_get_int_property。
3).查找范围:all:整个HTML页面;Headers:页面的头;body:页面的体,包含所有的资源但不包含头;NORESOURCE(默认选项):仅仅包含页面的体,不包括头和资源。
4).如果不知道要查找的精确的文本,或者要查找的多个文本不是完全相同的,可以使用前缀和后缀来表示。这时需要用到TextPfx和TextSfx属性。这2个属性必须同时指定,一旦指定了其中一个,就不能指定Text属性了。
Attributes:
> Text or TextPfx or TextSfx 其中Text和后面两个属性不能同时指定。"/IC"表示忽略大小写;"/BIN"表示指定的是二进制数据。(下面几项都是可选的)
> Search:查找的范围可以是Headers、Body、Noresource或ALL,默认是Noresource;
> Fail:检查失败的条件的操作方法(即设置检查失败的发生条件),其值为Found或NotFound;
> ID:用于在log中标识检查点的,与函数同行,便于在日志文件中查看到检查点函数;
Note:
1< web_global_verification在WAP协议下不能运行。
2< web_global_verification在其之后所有的Action类函数中执行搜索。
For example:
参见脚本:【web_global_verification】
Cookie Functions (cookie函数):
2. int web_add_cookie (const char *Cookie)
Description:
此函数可以添加新的cookie。如果名称和路径与现有cookie匹配,则现有cookie被新cookie覆盖。如果参数中的“"expires" date”已过期,则删除该cookie。
Attributes: (参数cookie的格式可以是以下几种)
> name=VALUE;
> domain=DOMAIN_NAME;
> expires=DATE; (指定到期时间)
> path=PATH; (default path is "/")
Note:
1< 脚本中使用的不是保存在浏览器中的cookie,而是运行时服务器发送给vuser的cookie。这些cookie仅仅是脚本运行时临时提供的。
2< 还要注意,从一个服务器设置cookie header时,”domain”属性是可选的。如果不指定,默认”domain”就是产生cookie响应的服务器主机名字,因为当调用web_add_cookie函数时,这个信息对于load generator不可用,但domain属性又是必须的。可以用空domain,必须用web_add_cookie_ex函数而不是web_add_cookie函数。
For example-1:
//expires为结束时间
web_add_cookie ("client_id=China127B; path=/; expires=Wednesday, 09-Nov-2009 12:10:30 GMT; domain=www.sohu.com");
For example-2:
参见脚本【web_add_cookie_webtours】
Header Functions (头文件函数):
3. int web_save_header (const char *type, const char *param );
Description:
函数将所有随后发生的操作函数的主URL的请求和响应头保存在参数param中。每个头用”/r/n”(或”\n”)分隔。每个新的请求头将替换参数的当前值。
如果想停止保存头,把参数字符置空即可,如:web_save_header(RESPONSE,"");调用此函数操作后,随后的头将不会保存。
Attributes:
> The type of header:REQUEST or RESPONSE;
> param : The parameter name.
Note:
1< 用此函数并不能从请求和响应头中提取像cookies的信息,相反,可以用web_reg_save_param函数指定其”Search=Headers”。
2< 当一个脚本访问URL时,web_save_header函数只保存初始用户的请求和服务响应。当HTML code需要包含在页面中的图片和框架时,页面显示这些附加请求和响应,而web_save_header函数不保存这些随后的请求和响应信息。
3< 如果服务器重定向一个请求去访问另外一个URL,web_save_header函数只保存最后一次(重定向的)请求头信息。
4< 此函数保存头文件信息功能,不支持脚本中包含的并发组(concurrent groups)。
For example:
参见脚本【web_save_header】
Filter Functions(过滤函数):
4. int web_add_filter ( [Action,]< List of Attributes >, LAST )
Description:
指定下载下一个操作函数中的内容时,要使用筛选器。筛选器将包含或排除含有匹配条件的URL,视传递到该函数的Action属性而定。默认操作是”Action=Exclude”。
Attributes: (函数web_add_filter()有很多个参数,如下常用的几个):
> Action:可以等于两个值,include、exclude。标识是你所要放到过滤器中的资源是要过滤掉的还是要加入的。
> URL:指定的要加到过滤器中的URL。
> UrlPrefix:过滤掉所有以这个指定字符开始的URL如"UrlPrefix = http://www.cc"。
> HOST:在URL中,有主机名字的标识,如果你赋予了这个参数主机名字,那么在执行的时候,将会把从这个主机上过来的URL给过滤掉。
> HOSTPrefix:和上一个的作用差不多,但是,这里是主机的前缀,只要和这个前缀匹配上的。从这些主机来的资源都会被屏蔽掉。
> HOSTSuffix:和HOSTPrefix的作用差不多,这里只是匹配后缀。
> Path:上下文路径
> PathPrefix:就是将上下文路径的前缀与这个参数能匹配起来的资源都放到过滤器中。
> PathSuffix:上下文路径的后缀名
> Port:端口的意思,如果设置了这个参数,就是会将从这个端口过来的数据都放到过滤器中。
> Scheme: URL指定的通信协议,如:http/https/ftp
……
For example-1:
//过滤掉除了http and https两个协议之外的其他通信协议(可设多个参数值)
web_add_filter("Action=Include", "Scheme=http", "Scheme=https");
For example-2:
// Call to web_add_filter only applies to the next action function(只适用于其下面的函数)
web_add_filter("Action=Exclude", "PathPrefix=/Images/Upload", LAST);
For example-3:
web_add_filter("Action=Exclude", "UrlPrefix=http://hi.images.csdn.net", LAST); //过滤了以此开头的URL信息
Miscellaneous Functions (辅助功能函数):
5. int web_get_int_property (const int HttpInfoType)
Description:
用于记录”HTTP Response Messages”相应的信息。支持所有Web scripts, 和仅对于运行在HTTP mode 的WAP scripts。不支持运行在Wireless Session Protocol (WSP) 模式下的WAP scripts。
Attributes:
> HTTP_INFO_RETURN_CODE: 返回HTTP头文件的code值,如;200、404等;
> HTTP_INFO_DOWNLOAD_SIZE: 返回最近一次下载的大小,单位是bytes;
> HTTP_INFO_DOWNLOAD_SIZE: 返回最近一次下载的时间,单位是millisecond(毫秒).
Note:
1< 在用此函数获得文件大小时,因为此函数得到的是上一次web函数获得响应的总的大小(包括head和body部分),而对于Txt和XML等文件,应不包含head部分的,因此不能用web_get_int_property函数获得的download size来作为文件本身的大小。
For example:
参见脚本【web_get_int_property】
6. int lr_xml_set_values ( [, ] [, LAST])
Description:
Sets the values of XML elements found by a query(设置查询设置的XML值),即可实现从XML输入字符中找到查询匹配的元素值。
常与lr_xml_get_values 函数一起用(获得查询设置的XML值)。
Attributes:
> XML: the XML Input String to query;(设置输入的XML字符)
> ResultParam: The output parameter containing the XML data after setting the new value. If the parameter does not exist, it is created.(设置新值后包含XML数据的输出参数,如果此参数不存在则创建。)
> Query: the XML Query on the input string XML. You can specify elements or attributes.(输入的XML字符中的内容模块,可以指定其元素或属性)
> Choose one of the following:
Value: the string value to set as the XML element (XML内容元素的字符值)
or:
ValueParam: the parameter name containing the value to set as the XML element (包含XML内容元素值的参数名)
> SelectAll: If "yes", all elements matching the query will be processed. If "no", only the first match will be processed. Default is "no". (yes,所有匹配的元素都被执行;no,只有第一个匹配的才被执行,此为默认值)
Note:
1< XML输入字符可以是包含XML data的原义字符,如:
"XML=John Smith
也可以是包含XML data的参数,如:"XML={EmployeeNameParam}"
2< 参数ValueParam中可以包含多个参数值:Param_1, Param_2, Param_3, ...
3< 当参数值是这样:"ValueParam=Param". lr_xml_set_values函数按参数顺序设置每一个相匹配的查询;
4< 当参数ValueParam or ResultParam已经存在,则他们的值将被覆盖。
For example :
参见脚本 【lr_xml_set_values】
7. int lr_vuser_status_message (const char * format)
Description:
Sends a message to the Vuser status area.
在controllor的vuser list的status列中显示设置的相应状态信息。函数向控制器或优化模块控制台的Vuser窗口的status区域发送字符串。它还将该字符串发送到Vuser日志。从VuGen运行时,消息被发送到output.txt。
此函数一般多用于设置了IP欺骗测试时,web_set_sockets_option function using the IP_ADDRESS_BY_INDEX option, lr_get_vuser_ip returns that IP.
Note:
1< 注意这里要在场景设置中设置“持续时间”,运行时显示的只是”Running”的状态信息。
For example-1: //运行controller状态中显示vuser的主机名称
下同脚本【lr_vuser_status_message】
Action()
{
lr_save_string(lr_get_host_name(), "host" ); //把取到的主机名作为参数"host"
lr_output_message("The host name is: %s",lr_eval_string("{host}"));
//显示状态信息
lr_vuser_status_message("The host name is:%s ",lr_eval_string("{host}"));
return 0;
}
For example-2: //IP欺骗测试中状态显示虚拟IP
Action()
{
char *ip;
ip=lr_get_vuser_ip();
if (ip)
{
lr_vuser_status_message("The ip address is %s",ip);
lr_output_message("The host IP is: %s",ip);
}
else
{
lr_vuser_status_message("IP spoofing disabled");
lr_output_message("IP spoofing disabled");
}
return 0;
}