最近在网上到一个关于loadrunner遍历一个页面中的url并进行访问的脚本,就把它用我们自己的项目实践了一下,发现有一点不完善。
原始版本:
Action()
{
char temp[64];
int num = 0 ;
int i = 0 ;
char *str ;
// char *temp ;
//获取函数,是一个数组
web_reg_save_param(
“UrlList”,
“LB/ALNUMIC=<a href=\”",
“RB=\”",
“ORD=all”,
LAST);
web_url(“localhost”,
“URL=http://www.baidu.com”,
LAST);
//获取数据的长度
str = lr_eval_string(“{UrlList_count}”);
lr_error_message(“%s”,str);
num = atoi(str);
for(i=1;i<=num;i++){
//格式化输出
sprintf(temp,”{UrlList_%d}”,i);
//生成参数
lr_save_string(lr_eval_string(temp),”Turl”);
//判定URL 是否合法
if (strstr(lr_eval_string(temp),”http”)) {
web_url(“TESTER”,”URL={Turl}”, LAST);
}else
{
lr_error_message(“Url is not exits”);
}
}
return 0;
}
把上面的url改成我们自己的项目的时候,运行出现在了问题,我们的项目在页面里面的url都是写的相对路径,也就是没有前面的域名地址,这样的相对路径是不能被web_url函数访问,然后就是提示了一大片url无效。它不能访问也就是差一个域名地址,那我把每一个这样的相对地址加一个不就可以访问了吗?
我们页面访问使用的是session,所以里面的相对地址前面都是以session开头,所以我在原来的版本上面增加了两个步骤,第一个就是获取每一次访问的session,然后以它判断是否是没有域名开头的usl,是的,再给它把域名加上去再访问。
以下是我改版的:
Action()
{
char temp[64];
int num = 0;
int i = 0;
char *str;
char fullurl[1024];
//获取函数,是一个数组
web_reg_save_param("UrlList","LB/ALNUMIC=<a href=\"",
"RB=\"","ORD=all",
LAST);
//获取每一次访问生成的session,以便后面判断url
web_reg_save_param("SessionID",
"LB=Object moved to <a href=\"/",
"RB=/\">here</a>",
"Search=Body",
LAST);
web_url("localhost",
"URL=http://xxx.xxxx.cn/",
LAST);
//获取数组的长度
str=lr_eval_string("{UrlList_count}");
lr_error_message("s%",str);
num=atoi(str);
for(i=3;i<=num;i++){
//格式化输出
sprintf(temp,"{UrlList_%d}",i);
//生成参数
lr_save_string(lr_eval_string(temp),"Turl");
//判定url是否合法
if(strstr(lr_eval_string(temp),"http")){
web_url("TEST","URL={Turl}",LAST);
}
else if(strstr(lr_eval_string(temp),lr_eval_string("{SessionID}")))
{
//lr_error_message(lr_eval_string("{Turl}"));
//完善url
strcpy(fullurl,"http://xxx.xxxx.cn/");
strcat (fullurl,lr_eval_string("{Turl}"));
//生成新的url参数
lr_save_string(fullurl,"url");
web_url("Every","URL={url}",LAST);
}
else
{
lr_error_message("Url is not exits");
lr_error_message(lr_eval_string("{Turl}"));
}
}
return 0;
}