怎么在Buffer里面读取想要的信息
我是用Winsocket协议录制的脚本,现在想要从返回的结果里面去读取想要的信息.现在查询关键字是动态的,用lr_save_searched_string函数获取,可是无法确想要
的字符串的长度.
还有用Winsocket协议录制的脚本要参数化一个参数,是不是直接到data.ws里找到相应的BUF
,再把面要的内容Replace with a parameter 就可以 了.
........我是一个新手,第一次用这个测试软件,问的问题可能很肤浅,望各位LR高手不要见怪 嗯,参数化data.ws里的buffer就行了。 谢谢! 我还有个问题:
lrs_get_static_buffer("socket0","buf11",178,i,NULL); 这个函数,我想把它的最后第二个参数,用变量代替,结果就显示这样的错误:
c:\\program files\\mercury interactive\\mercury loadrunner\\scripts\\commonselecttest\\\\combined_CommonSelectTest.c (4): 1 errors, not writing pre_cci.ci
请教..什么原因 lrs_get_static_buffer ( char *s_desc, char *buffer, int offset, int length, char *encoding );
offsetThe offset inside the buffer (binary representation of the data).
lengthThe length of the data to retrieve (binary representation of the data).Specify -1 to ignore the offset and retrieve the whole buffer.
encodingThe encoding method for the returned data. The possible values are "ascii" or "ebcdic". A NULL value indicates the original client format. 谢谢..英文不好理解 不是吧。我也是用win socket测试,但是像Zee所说的那样去参数化,好像不怎么行得通喔。我测试的是一个聊天工具(就像聊天室的那种,不过采用的是C/S架构的)
send buf0 76
"+IG&"
"\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"<<Pid>" //这里就是我要参数化的地方啦。录制的时候是0001的
"\x00\x00\x00\x00\x00\x00"
"aaa"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"111"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
但是参数化后,运行就会出错:
Action.c(14): lrs_send(socket0, buf2)
Action.c(14): 错误: socket0 - 软件造成连接终止。错误代码: 10053。
请问有谁知道是什么原因啊??请指教。。。在线等。
[ 本帖最后由 wawa133 于 2006-5-23 14:06 编辑 ] 说明你在14行的地方有错误,你再去查查lrs_send函数的格式. lrs_send 这函数是这样的:
lrs_send("socket0", "buf10", LrsLastArg); lrs_send("socket0", "buf2", LrsLastArg);
这句吗?不觉得有错啊。
send buf2 28
"+IG&"
"\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00"
"\fGA(E01"
"\x00\x00\x00\x00"
"1&"
实在是看不出有什么地方错。
参数化的时候是不是要按照软件的数据库定义的名称啊?我只想参数化登录时的用户号,用户昵称,和密码。
ID,Name,Pwd
001,11,11
002,22,22
不知道这样定义对不对。但是不论我怎么运行都是出同样的错喔。
[ 本帖最后由 wawa133 于 2006-5-23 14:24 编辑 ] 你脚本里是这么写的吗?
但是,你的错误提示是:
Action.c(14): lrs_send(socket0, buf2)<--这个!再仔细看看 可以啊,不过你的用户名,密码要一一对应起的!parameter list 里面你一个一个选项要注意看的 vuser_init:#include "lrs.h"
vuser_init()
{
lrs_startup(257);
lrs_create_socket("socket0", "TCP", "RemoteHost=ntm034.ntm789vr.com:5000",LrsLastArg);
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
return 0;
}
action:#include "lrs.h"
Action()
{
lr_think_time(7);
lrs_send("socket0", "buf2", LrsLastArg);
lrs_receive("socket0", "buf3", LrsLastArg);
lrs_send("socket0", "buf4", LrsLastArg);
lr_think_time(7);
lrs_send("socket0", "buf5", LrsLastArg);
return 0;
}
vuser_end:#include "lrs.h"
vuser_end()
{
lrs_cleanup();
return 0;
}
data.ws:
;WSRData 2 1
send buf0 76
"+IG&"
"\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
"<0001"
"\x00\x00\x00\x00\x00\x00"
"aaa"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"111"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
recv buf1 20
"+IG&"
"\x80\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00"
send buf2 28
"+IG&"
"\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00"
"\fGA(E01"
"\x00\x00\x00\x00"
"1&"
recv buf3 20
"+IG&"
"\x80\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00"
send buf4 28
"+IG&"
"\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00"
"\f"
"\x00\x00\x00"
"\b44545545"
send buf5 36
"+IG&"
"\x00\x00\x00\x06\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x10"
"this is / test!!"
-1
这就是所有的脚本啦。都在这里了。搞得我头都大了。 你可以用HTTP加Winsocket两协议一起录,即然你要参数化登陆,那么你就不要分开录了,全部录在action里面吧.这样录出来的脚本好读一点.你再试试吧! 用http加winsocket录制不了脚本,c/s架构的。不过我可以试试看把登陆的也录进ACTION里看看。谢谢楼上的。 呵呵,不客气,我也是第一次用的,帮助上提到每次回收的时候LR只运行ACTION里的脚本,如果你要参数化登陆,就要把vusr_int 里的录到action里了.
我现在头也不比你好多少,有好几个函数比如lrs_save_searched_string();最后第二个参数是要求一个明确的数字,可是查询条件各种各样,我哪知道那个条件的字符串有多少长啊.哎,字母它一个不认识,即使我知道有多少,我也只能通过函数得到,到这里就死了,做不下去了.LR里这个函数的参数是死的.现在证在头痛中................
找寻其它解决办法. 是回放!!写错字了! 试过了。我把 lrs_send("socket0", "<NewParam>", LrsLastArg); buf0参数化,但是运行的时候出错:Action.c(14): lrs_send(socket0, <NewParam>)
Action.c(14): 错误: 指定的缓冲区 <NewParam> 不存在。错误代码: 9011。
请问这个是什么问题啊? 晕!!不能直接把BUF参数化的 你要到data.ws里面到那个buf,再到里面打到你要参数化的用户名,密码什么的,再参数化,如果还不行你就要写脚本了!用什么函数就看HELP吧.我第一次玩这东西,被他玩死了要................
页:
[1]
2