Loadrunner关于页面检查的几个函数详解
环境:
Loadrunner版本:8.0
自建一个test.html文件:
<html>
<head>
<meta name="google1" content="google2"/>
<title>google3</title></head>
<body>
google4:<input type="text" name="google5" />
<input type="submit" value="google6"/><br>
<a href="http://www.google.com/calendar/render?hl=zh-CN&tab=wc" class="gb2">google7</a><br>
<img src=http://www.google.cn/intl/zh-CN/images/logo_cn.gif width=200 height=88 border=0 alt="google8" title="Google9">
<img src=http://www.google.cn/intl/zh-CN/images/logo_cn.gif width=200 height=88 border=0 alt="google8" title="Google9">
</body>
</html>
 
一、web_image_check
语法:
int web_image_check(const char*CheckName,<List of Attributes>,<"Alt=alt"|| "Src=src">, LAST );
参数:
1、CheckName:Check名称。
2、List of Attributes:
支持的属性有:Frame(在多Frame的情况下,定义要查找Frame的范围)。
支持的选项有:
Expect:检查通过的条件,默认为Found
Matchcase:是否区分大小写,默认为no
Repeat:找到第一个符合条件字符串后,是否还继续搜索,默认为yes
Report:什么情况下(success、failure、always)显示检查结果,默认always
Onfailure:失败(expect的值决定)的情况下,是否继续,默认为Continue on Error。
3、Alt:图片的ALT标记。
4、Src:图片的SRC标记。
说明:
1、注意勾上Runtime Settings—Internet Protocl—Preferences—Checks:Enable Image and text check
2、注意该函数放到web_url后面,且Web_url的Mode须为html(此函数仅仅支持基于HTML的脚本)
3、Web_image_check检查指定的图象是否在HTML页面中出现。
4、Alt或者Src两者必须有一个在参数列表中出现。如果两项都通过,那么检查成功。
示例:
Loadrunner脚本:
……
 web_url("google",
  "URL=http://127.0.0.1:8000/test.html",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTML",
  LAST);
web_image_check("web_image_check",
  "expect=NotFound",
  "Alt=Google8",
  "matchcase=no",
  "repeat=no",
  "report=failure",
  "Onfailure=abort",
  LAST);
web_find("web_find",
  "What=Google",
  LAST);
……
运行结果:
Starting action Action.
Action.c(15): Found resource "http://www.google.cn/intl/zh-CN/images/logo_cn.gif" in HTML "http://127.0.0.1:8000/test.html"   [MsgId: MMSG-26659]
Action.c(15): web_url("google") was successful, 11968 body bytes, 521 header bytes   [MsgId: MMSG-26386]
Action.c(35): Fatal Error -27191: "web_image_check" failed (1 occurrence(s) found. Alt="Google8", Src="")   [MsgId: MERR-27191]
Action.c(35): web_image_check highest severity level was "FATAL ERROR"   [MsgId: MMSG-26391]
Abort was called from an action.
Ending Vuser...
解释:
1、 expect=NotFound,由于找到了符合要求的结果,所以为失败
2、 repeat=no,实际上有两个符合条件的结果,不过不继续,所以1 occurrence(s) found
3、 Onfailure=abort,该检查结果为fail,所以abort,后面的文件检查未执行。
二、web_find
语法:
 int web_find (const char*StepName, <Attributes and Specifications list>,char*searchstring, LAST );
参数:
1、StepName:Check名称
2、Attributes and Specifications list:
支持的属性有:
Expect:定义在什么情况下函数检查成功:找到了指定的搜索标准或者没有找到。例如说,可以检查指定的错误信息是否出现在web页面中。合法的值有2个:found和notfound。默认值是“found”。
Matchcase:指定搜索是否区分大小写,默认为no。
Repeat:指定当第一次发现要查找的字符串时,搜索是否继续。当一个web页面中包含多个被查找的字符串时,此参数是非常有用的。合法的值有2个:yes,no。默认值是“yes”。
Report:指定在什么情况下,VuGen在执行日志中显示此函数的检查结果。合法的值有:success,failure,always。默认值是“always”。
Onfailure:此参数决定在函数检查失败后,Vuser是否中断。参数值是abort。如果指定了Onfailure=abort,当函数检查失败时,不论在运行时设置中的error-handling(Runtime Settings—Miscellaneous)是什么,脚本都会中断。如果没有指定Onfailure=abort,那么运行时设置中error-handling将会起作用。
支持的特性有:RightOf, LeftOf (不支持7.x及更高版本)。
RightOf:要查找的字符串右边的内容。
LeftOf:要查找的字符串左边的内容。
3、Searchstring:需要查找的字符串,格式为“What=stringxyz”。此搜索不区分大小写。
4、LAST:属性列表结束符。
说明:
1、注意勾上Runtime Settings—Internet Protocl—Preferences—Checks:Enable Image and text check
2、注意该函数放到web_url后面,且Web_url的Mode须为html
3、此函数的作用是在HTML页面中查找指定的字符串。
4、函数只能在基于HTML录制的脚本中使用。当指定的HTML请求全部完成以后,开始执行搜索过程,比web_reg_find要慢。
5、web_find函数在C语言的脚本中已经被web_reg_find所替代,web_reg_find运行速度比较快,而且在HTML-based和URL-based的录制方式中都可以使用。
6、在C语言脚本中,web_find是向后兼容的。Java和Visual Basic脚本中不支持它。
7、WAP和WSP协议不支持。
示例:
Loadrunner脚本:
……
 web_reg_find("Text/IC=google",
    "Search=Body",
  LAST);
web_url("google",
  "URL=http://127.0.0.1:8000/test.html",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTML",
  LAST);
web_find("web_find",
  "What=Google",
  LAST);
……
运行结果:
Starting action Action.
Action.c(7): Registering web_reg_find was successful   [MsgId: MMSG-26390]
Action.c(15): Found resource "http://www.google.cn/intl/zh-CN/images/logo_cn.gif" in HTML "http://127.0.0.1:8000/test.html"   [MsgId: MMSG-26659]
Action.c(15): Registered web_reg_find successful for "Text=google" (count=14)   [MsgId: MMSG-26364]
Action.c(15): web_url("google") was successful, 11968 body bytes, 521 header bytes   [MsgId: MMSG-26386]
Action.c(44): "web_find" successful. 3 occurrence(s) of "Google" found (RightOf="", LeftOf="")   [MsgId: MMSG-27196]
Action.c(44): web_find was successful   [MsgId: MMSG-26392]
Ending action Action.
解释:
可以看出两个函数最后的检索结果不一样,web_reg_find发现了14个,web_find只发现了3个。这是在web_find里再添加一个属性—"matchcase=yes",运行结果为:
Action.c(44): Error -27195: "web_find" failed. 0 occurrence(s) of "Google" found (RightOf="", LeftOf="")   [MsgId: MERR-27195]
Action.c(44): web_find highest severity level was "ERROR"   [MsgId: MMSG-26391]
web_find只检索“>”、“<”间的内容。
三、web_reg_find
语法: int web_reg_find (const char*attribute_list, LAST);
参数:
1、attribute_list:
通过Name=Value对来传递参数。例如“Text=string”。Text,TextPfx,TextSfx三个必须有一个出现。其他的属性是可选的。
Text:要搜索的字符串,字符串必须非空,以NULL结尾。可以使用text flags自定义搜索字符串。
TextPfx:要搜索的字符串的直接前缀。
TextSfx:要搜索的字符串的直接后缀。
Search:搜索的范围。可选的值是:Headers(search only the headers) 、Body(search only the Body data)、Noresource (search only the HTML body, excluding headers and resources)、ALL (search body , headers, and resources),默认值是“BODY”。
SaveCount:保存到参数中的匹配的字符串的个数。使用这个属性,需要指定“SaveCount=param”。检查操作被执行后,param 的值是null结尾的数字类型的值。
Fail:设置函数检查在什么状态下失败。可以是“Found或“NotFound”。默认是“NotFound”。
ID:日志文件中标识此函数的一个字符串。
RelFrameId:相关联的FrameId。注意:此参数在GUI级别的脚本中不受支持。
2、LAST:属性列表结束的标记符。
说明:
1、web_reg_find属于注册函数,注册一个在web页面中搜索文本字符串的请求,在接下来Action(象web_url)类函数中执行搜索。
2、通过查找期望的字符是否存在来验证是否返回了期望的页面。例如,通过查找“Welcome”来检查主页是否完全打开了。也可以查找“Error”检查浏览器是否发生错误。还可以使用此函数注册一个请求来统计特定字符串出现的次数。
如果检查失败,在接下来的Action类的函数中会报告错误。此函数仅仅注册请求,并不执行。函数的返回值只表明注册是否成功,并不表示检查的结果。
3、此函数不仅能够查找text,还能查找到围绕着text的strings。不要同时指定text和前缀后缀。
4、此函数在HTML-based和URL-based的脚本中都可以使用。此函数是在所请求内容到达之前注册搜索请求的,所以当所请求内容一到达后就会执行搜索,产生的脚本比较高效。
示例:
Loadrunner脚本:
……
 web_reg_find ("Text/IC=google",
    "Search=Body",
  LAST);
web_url("google",
  "URL=http://127.0.0.1:8000/test.html",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode= HTTP ",
  LAST);
web_url("google",
  "URL=http://www.baidu.com/",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTTP",
  LAST);
……
运行结果:
Starting action Action.
Action.c(7): Registering web_reg_find was successful   [MsgId: MMSG-26390]
Action.c(12): Registered web_reg_find successful for "Text=google" (count=14)   [MsgId: MMSG-26364]
Action.c(12): web_url("google") was successful, 538 body bytes, 295 header bytes   [MsgId: MMSG-26386]
Action.c(22): web_url("google") was successful, 1714 body bytes, 372 header bytes   [MsgId: MMSG-26386]
Ending action Action.
解释:
由上面的结果可以看出,web_reg_find 只在其之后的一个Action类函数中执行搜索。
四、web_global_verification
语法:
 int web_global_verification(<List of Attributes>, LAST );
参数:
List of Attributes:
Text:此属性是一个非空的,以NULL结尾的字符串,表示要查找的内容。语法是”Text=string”。还可以使用text flags自定义字符串。
TextPfx:没有指定Text的情况下使用此属性。要查找的字符串的前缀。语法是” TextPfx =string”。还可以使用text flags自定义字符串。
TextSfx:没有指定Text的情况下使用此属性。要查找的字符串的后缀。语法是” TextSfx =string”。还可以使用text flags自定义字符串。
Search:可选项,在哪里查找字符串。可选的值是:Headers,Body,NORESOURCE或All。默认值是NORESOURCE。语法是“Search=value”。
Fail:当字符串找不到时的处理选项:Found (默认值)或NotFound。Found表示当找到对应的字符串时发生了错误(例如“Error”)。NotFound表示当找不到字符串时发生了错误。语法是“Fail=value“。
ID:在日志文件中标识当前函数。
注:text flags:/IC表示忽略大小写;/BIN表示指定的是二进制数据。
说明:
web_global_verification属于注册函数,注册一个在web页面中搜索文本字符串的请求,与web_reg_find只在下一个Action函数中执行搜索不同的是,它是在之后所有的Action类函数中执行搜索的。可以搜索页面的body,headers,html代码或者是整个页面。
在检测一些应用程序级别(不通过http状态码来表现)的错误时,web_global_verification是非常有用的。如果要定位通过HTTP状态码表现的错误时,使用web_get_int_property。
查找范围:all:这个HTML页面;Headers:页面的头;body:页面的体,包含所有的资源但不包含头;NORESOURCE(默认选项):仅仅包含页面的体,把包括头和资源。
如果不知道要查找的精确的文本,或者要查找的多个文本不是完全相同的,可以使用前缀和后缀来表示。这时需要用到TextPfx和TextSfx属性。这2个属性必须同时指定,一旦指定了其中一个,就不能指定Text属性了。
注意:web_global_verification在WAP协议下不能运行。
示例:
Loadrunner脚本:
……
 web_global_verification("Text/IC=google",
  "Fail=NotFound",
   LAST);
web_url("google",
  "URL=http://127.0.0.1:8000/test.html",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode= HTTP ",
  LAST);
web_url("google",
  "URL=http://www.baidu.com/",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTTP",
  LAST);
……
运行结果:
Starting action Action.
Action.c(7): Registering web_global_verification was successful   [MsgId: MMSG-26390]
Action.c(11): web_url("google") was successful, 538 body bytes, 295 header bytes   [MsgId: MMSG-26386]
Action.c(21): Error -26366: "Text=google" not found for web_global_verification   [MsgId: MERR-26366]
Action.c(21): web_url("google") highest severity level was "ERROR", 1714 body bytes, 372 header bytes   [MsgId: MMSG-26388]
Ending action Action.
解释:
由上面的结果可以看出,web_global_verification在其之后所有的Action类函数中执行搜索。
Loadrunner关于页面检查的几个函数详解的更多相关文章
- loadrunner 脚本优化-关联函数web_reg_save_param()函数详解
		
脚本优化-关联函数web_reg_save_param()函数详解 by:授客 QQ:1033553122 Insert->New Step,打开Add Step对话框 选择函数web_re ...
 - loadrunner 脚本开发- web_url函数详解
		
脚本开发- web_url函数详解 by:授客 QQ:1033553122 加载指定url的web页面(GET请求) C语言函数 int web_url( const char *StepName ...
 - Python内置函数详解
		
置顶 内置函数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii https://docs.pyth ...
 - malloc 与 free函数详解<转载>
		
malloc和free函数详解 本文介绍malloc和free函数的内容. 在C中,对内存的管理是相当重要.下面开始介绍这两个函数: 一.malloc()和free()的基本概念以及基本用法: 1 ...
 - JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
		
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
 - kzalloc 函数详解(转载)
		
用kzalloc申请内存的时候, 效果等同于先是用 kmalloc() 申请空间 , 然后用 memset() 来初始化 ,所有申请的元素都被初始化为 0. view plain /** * kzal ...
 - javascript 函数详解2 -- arguments
		
今天我们接着上篇文章来继续javascript函数这个主题.今天要讲的是函数对像中一个很重要的属性--arguments. 相关阅读: javascript 函数详解1 -- 概述 javascrip ...
 - 【C语言】printf函数详解
		
C语言printf函数详解 一.相关基础知识 请求printf()打印变量的指令取决于变量的类型,例如打印整数用%d符号,打印字符用%c符号,这些符号称为转换说明(conversion specifi ...
 - linux内核中send与recv函数详解
		
Linux send与recv函数详解 1.简介 #include <sys/socket.h> ssize_t recv(int sockfd, void *buff, size_t n ...
 
随机推荐
- CKEditor的API查看
			
概述 在写上一篇随笔的过程中翻看了CKEditor的API,现在把相关的经验记录下来. CKEditor的相关文档地址:http://docs.ckeditor.com/#,API在第二个标签页:第一 ...
 - TarjanLCA学习笔记
			
1.前言 首先我们介绍的算法是LCA问题中的离线算法-Tarjan算法,该算法采用DFS+并查集,再看此算法之前首先你得知道并查集(尽管我相信你如果知道这个的话肯定是知道并查集的),Tarjan算法的 ...
 - POJ 3662 Telephone Lines (分层图)
			
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6785 Accepted: 2498 D ...
 - Xamarin Android项目提示SDK版本太老
			
Xamarin Android项目提示SDK版本太老 错误信息:The installed Android SDK is too old.Version 24.3.4 or newer is requ ...
 - [BZOJ4537][HNOI2016]最小公倍数(分块+并查集)
			
4537: [Hnoi2016]最小公倍数 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 1687 Solved: 607[Submit][Stat ...
 - HDU 4388 Stone Game II 博弈论 找规律
			
http://acm.hdu.edu.cn/showproblem.php?pid=4388 http://blog.csdn.net/y1196645376/article/details/5214 ...
 - [BZOJ3131] [Sdoi2013]淘金
			
[BZOJ3131] [Sdoi2013]淘金 Description 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐 ...
 - TZOJ 数据结构实验--循环队列
			
描述 创建一个循环队列,队列元素个数为4.能够实现队列的初始化.入队列.出队列.求队列长度等操作. 循环队列数据类型定义如下: typedef struct{ int data[Max]; in ...
 - Java高级架构师(一)第38节:Nginx的负载均衡模块
			
负载均衡: 1.热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务.服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB..... upstream ...
 - Java高级架构师(一)第37节:反向代理和动静分离的实现
			
http协议->server->location 输入http:locahost:80/ 进入百度的界面. 做负载转发测试.路径已经转发,可能一些协议已经屏蔽了,导致内容出不来. 关于负载 ...