目录
前言
VuGen是根据服务器端返回的状态码来判断脚本是否执行成功,如果状态码为200,那么VuGen就认为是成功了。但是脚本未必执行成功,因为大多数的系统出错未必会返回错误页面,而是返回消息提示框。比如录制的注册脚本,同样的用户名每次都显示是执行成功,但是同样的用户名显然是不可能每次都能注册成功,这个时候就需要添加检查点,对服务器返回的内容进行检查,比如验证网页上是否存在指定的Text或者Image。
文本检查点:web_reg_find()函数
能够对服务器的返回内容进行查询
注意:
- 该函数为注册函数,一定要写到请求前面
- 函数在缓存中查找相应的内容,即无须等待html页面内容显示出来就可查找
方式一:手动输入检查点函数
1.在右侧Steps Toolbox工具栏中输入reg_find
参数说明:
Search for specific Text
输入需要查找的字符串,检查点函数将会在服务器返回中对该字符串进行查找,该功能和word中的查找功能十分相似。内容支持参数化,并且支持和关联相同的通配符和识别方式。
Search for Text by start and end of string
提供根据左右边界进行查找的功能
Search in
设置在服务器返回的哪部分数据中进行查询,有All,Headers,Body三个选项,和关联选项相同。
Save count
文本检查点特别之处,记录查找内容的出现次数并且存放到一个参数中,可以填写一个参数名称来存放计数结果。
Fail if
设置在什么情况下文本检查点函数错误。如果选择Found,表示如果在服务器返回中存在需要检查的对象,那么文本检查点函数出错;选择NotFound则相反,如果没找到对应的内容,那么文本检查点函数出错。
检查点函数的错误会导致整个脚本运行结果的失败,通过这个功能可以方便地定位脚本运行中的逻辑错误。
3.示例:检查登录成功的Welcome出现在页面上,生成的代码如下
Action()
{
web_add_auto_header("Accept",
"text/html, application/xhtml+xml, image/jxr, */*");
web_add_auto_header("Accept-Encoding",
"gzip, deflate");
web_add_auto_header("Accept-Language",
"zh-Hans-CN,zh-Hans;q=0.5");
web_add_auto_header("DNT",
"1");
web_add_auto_header("UA-CPU",
"AMD64");
web_add_auto_header("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; rv:11.0) like Gecko");
web_url("WebTours",
"URL=http://localhost:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t5.inf",
"Mode=HTML",
LAST);
web_link("sign up now",
"Text=sign up now",
"Snapshot=t8.inf",
LAST);
web_add_header("Cache-Control",
"no-cache");
lr_think_time(10);
//检查点函数
web_reg_find("Text=Welcome",
LAST);
web_submit_form("login.pl",
"Snapshot=t9.inf",
ITEMDATA,
"Name=username", "Value=kongsh23", ENDITEM,
"Name=password", "Value=kongsh23", ENDITEM,
"Name=passwordConfirm", "Value=kongsh23", ENDITEM,
"Name=firstName", "Value=kongsh", ENDITEM,
"Name=lastName", "Value=kongsh", ENDITEM,
"Name=address1", "Value=bj", ENDITEM,
"Name=address2", "Value=bj", ENDITEM,
"Name=register.x", "Value=65", ENDITEM,
"Name=register.y", "Value=6", ENDITEM,
LAST);
return 0;
}
方式二:在录制的时候生成检查点函数
生成脚本:
Action()
{
web_add_auto_header("Accept",
"text/html, application/xhtml+xml, image/jxr, */*");
web_add_auto_header("Accept-Encoding",
"gzip, deflate");
web_add_auto_header("Accept-Language",
"zh-Hans-CN,zh-Hans;q=0.5");
web_add_auto_header("DNT",
"1");
web_add_auto_header("UA-CPU",
"AMD64");
web_add_auto_header("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; rv:11.0) like Gecko");
/*Correlation comment - Do not change! Original value='126048.601863102ztiDzctpQfiDDDDDDiQAVpHtQHf' Name ='userSession' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=userSession",
"RegExp=name=\"userSession\"\\ value=\"(.*?)\"/>\\\n<table\\ border",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
"RequestUrl=*/nav.pl*",
LAST);
web_url("WebTours",
"URL=http://localhost:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t23.inf",
"Mode=HTML",
LAST);
//自动生成的检查点
web_reg_find("Text=xiaoa2",
LAST);
web_add_header("Cache-Control",
"no-cache");
lr_think_time(17);
web_submit_data("login.pl",
"Action=http://localhost:1080/cgi-bin/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://localhost:1080/cgi-bin/nav.pl?in=home",
"Snapshot=t25.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={userSession}", ENDITEM,
"Name=username", "Value=xiaoa2", ENDITEM,
"Name=password", "Value=xiaoa2", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=68", ENDITEM,
"Name=login.y", "Value=15", ENDITEM,
LAST);
return 0;
}
回放结果:
图片检查点:web_image_check函数
检查服务端返回的HTML页面是是否存在指定的图像,函数定义如下:
int web_image_check(constchar * CheckName,<Listof Attributes>,<“Alt = alt”||“Src =src”>,LAST);
CheckName:图像检查的名称,函数标题,它显示在测试树中。
Alt:检查图像的ALT标签。空的Alt字符串是非法的。
Src:检查图像的SRC标签。空的Src字符串是非法的。
LAST:指示字段列表结束的标记。
web_image_check("Go2Venus", "Alt=Venus", LAST );
注意:图片检查点函数必须在Run-time Settings中打开Preferences下的Enable Image and text check才有效果。否则会出现以下提示
步骤一:先执行一遍录制生成脚本
步骤二:插入web_image_check函数
步骤三:生成函数
web_image_check("image_check",//函数名称
"Alt=SignOff Button",//图片的alt属性
LAST);
步骤四:回放结果: