51Testing软件测试论坛
标题:
百度ajax搜索的Loadrunner代码
[打印本页]
作者:
云层
时间:
2010-9-10 16:38
标题:
百度ajax搜索的Loadrunner代码
最近有人看了我的Google的ajax案例后想做个baidu的,然后总是做不出来于是问我,这里丢一个Baidu Ajax的Loadrunner 9.52的代码,其实道理是一样的,虽然代码不一样,写不出来我觉得还是基础不够扎实而已。
ajax到底是什么,就是小片段发http请求返回数据包再更新本页而已,baidu的ajax只是在编码上采用了json的方式,LR解包要做2次分离而已。
代码如下:
splitchartoparamarr(char *x,char *y,char *paramarrname)//该函数的作用是输入*x,按照*y边界进行分割,最后生成参数数组paramarrname
{
extern char * strtok(char * string, const char * delimiters );
char charstring[1000],separators[100],paramname[110];//定义输入的字符串,分割符和需要生成的数组名,字符串长度1000,分隔符100,数组名100
char * token;
int i=0;//初始化计数器
char paramcount[10],paramarrcount[110];//定义生成参数数组的两个元素,参数数组长度及参数数组名_count参数
strcpy(charstring,x);
strcpy(separators,y);
token = (char *)strtok(charstring, separators); // Get the first token
if (!token) {
lr_output_message ("No tokens found in string!");
return( -1 );
}
while (token != NULL ) { // While valid tokens are returned
//lr_output_message ("%s", token );//输出分割内容
i++;
sprintf(paramname,"%s_%d",paramarrname,i);
//lr_output_message ("%s", paramname );//输出参数名
lr_save_string(token,paramname);
token = (char *)strtok(NULL, separators); // Get the next token
}
sprintf(paramarrcount,"%s_count",paramarrname);
itoa(i,paramcount,10);
lr_save_string(paramcount,paramarrcount);
}
Action()
{
web_add_cookie("BAIDUID=E7D926225049FBFA2825D275471717A8:FG=1; DOMAIN=www.baidu.com");
web_url("
www.baidu.com
",
"URL=http://www.baidu.com/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t16.inf",
"Mode=HTML",
EXTRARES,
"Url=/js/bdsug.js?v=1.0.3.0", ENDITEM,
"Url=/favicon.ico", "Referer=", ENDITEM,
LAST);
web_add_cookie("BAIDUID=E7D926225049FBFA2825D275471717A8:FG=1; DOMAIN=suggestion.baidu.com");
lr_think_time(13);
web_url("su",
"URL=http://suggestion.baidu.com/su?wd=l&p=3&cb=window.bdsug.sug&t=1284106978040",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t17.inf",
"Mode=HTML",
LAST);
web_url("su_2",
"URL=http://suggestion.baidu.com/su?wd=load&p=3&cb=window.bdsug.sug&t=1284106978427",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t18.inf",
"Mode=HTML",
LAST);
web_url("su_3",
"URL=http://suggestion.baidu.com/su?wd=loadu&p=3&cb=window.bdsug.sug&t=1284106978662",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t19.inf",
"Mode=HTML",
LAST);
web_url("su_4",
"URL=http://suggestion.baidu.com/su?wd=loadr&p=3&cb=window.bdsug.sug&t=1284106979097",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t20.inf",
"Mode=HTML",
LAST);
web_url("su_5",
"URL=http://suggestion.baidu.com/su?wd=loadru&p=3&cb=window.bdsug.sug&t=1284106979222",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t21.inf",
"Mode=HTML",
LAST);
web_url("su_6",
"URL=http://suggestion.baidu.com/su?wd=loadrun&p=3&cb=window.bdsug.sug&t=1284106979396",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t22.inf",
"Mode=HTML",
LAST);
web_reg_save_param("search",
"LB=[\"",
"RB=\"]",
"Ord=1",
"Search=NoResource",
LAST);
web_url("su_7",
"URL=http://suggestion.baidu.com/su?wd=loadrunner&p=3&cb=window.bdsug.sug&t=1284106979773",
"TargetFrame=",
"Resource=0",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t23.inf",
"Mode=HTML",
LAST);
splitchartoparamarr(lr_eval_string("{search}"),"\",\"","ajaxsearch");
lr_save_string(lr_paramarr_random("ajaxsearch"),"temp");
web_add_cookie("BAIDUID=E7D926225049FBFA2825D275471717A8:FG=1; DOMAIN=s.baidu.com");
web_url("s",
"URL=http://www.baidu.com/s?wd={temp}&oq=loadrunner&rsp=2&f=3&sugT=3295",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=http://www.baidu.com/",
"Snapshot=t24.inf",
"Mode=HTML",
EXTRARES,
"Url=http://s.baidu.com/w.gif?q=loadrunner+9%2E5+%C6%C6%BD%E2&fm=se&T=1284106991&y=8EDEAABA&cw=1379&path=http://www.baidu.com/s?wd=loadrunner+9.5+%C6%C6%BD%E2&oq=loadrunner&rsp=2&f=3&sugT=3295&cid=0&qid=df03299c01c602f8&t=1284106982379", "Referer=http://www.baidu.com/s?wd=loadrunner+9.5+%C6%C6%BD%E2&oq=loadrunner&rsp=2&f=3&sugT=3295", ENDITEM,
LAST);
return 0;
}
作者:
云层
时间:
2010-9-10 16:44
ps,这个还不是完整的代码,你可以自己做参数化,并且模拟参数化的内容产生的多个请求,具体写法参考我书后面的ajax章节的字符串遍历方式
作者:
御风弄影
时间:
2010-9-10 17:13
云层老师的这种精神真赞~~~顶一下
作者:
yzylion
时间:
2010-9-10 17:33
标题:
请教
云层:对于你的脚本我提几个疑问
一直询问你的那个人就是我,首先非常感谢你一直的解答,但是我还是想有几个疑问请教你:
1、你这里说只是因为百度使用了json的编码格式,要做两次解包而已
疑惑:我通过httpwatch进行http数据包的拦截分析,google也用的是json的编码格式。那么,参考你之前做的google的ajax视频来说,就不需要什么split的解包的操作。这个地方不明白,希望得到你的解惑
2、跟你请教,你说你的脚本录制方式是html base script,但是我在lr9.1的基础上用该方式下的两种submit_date和submit_form均不是你博客所说的录制的内容。唯有用url的方式才与你博客的内容一致。这里我想请问你:是因为我的版本问题还是你的口误?
另外一点:建议
记得你的lr书出版的时候专门在51testing上面开了一个版本来回答消费者对该书的一些疑惑,当然每个人精力有限,所以是固定周期的。这个很好。作为我们看到了你对于用户的体验的重视,也看到了我们之间的互动。
所以,希望你针对一些问题,可不可以,适当的,平和的进行一些指导。
因为大家都是做这一块的,就是因为51testing能够为大家解答一些疑惑和给予一定的方向指导,大家才会来到这里,不是吗?我相信,在云大你们这么优秀的讲师的参与下,51testing将更加体现出测试精神家园的家园的感觉,谢谢
作者:
PrefTest
时间:
2010-9-11 10:16
这个脚本还可以进一步改进,将几个web_url合并在一个,做一个循环,根据给出的搜索字符串(例如:LoadRunner)来决定循环几次,发送web_url请求
作者:
msnshow
时间:
2010-9-13 22:13
怎么感觉简单的事情,却弄得很复杂一样
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2