最近在网上到一个关于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,""); 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;}