【!已解决】【关联问题】如何获得此处的jsessionid?
介绍系统:基于.net framework 2.0的胖客户端,中间层部署在 websphere上。登录时,服务器会返回一个 jsessionid。
问题:
如何获取此处的jessionid
录制的脚本:
参见附件 脚本.rar
服务器的response保存在了xml文件中,信息如下:
<table id="result">
<head>
<cols name="result" type="string" defaultvalue="" selectvalue="" cn_name="执行结果" length="" />
<cols name="sessionid" type="string" defaultvalue="" selectvalue="" cn_name="session编码" length="" />
</head>
<body>
<rows result="true" sessionid="F0BC29CC29F753EFC840327E41162681" />
</body>
</table>
请问在这种情况下,可不可以直接使用web_reg_save_param,
1.如果不可以的话,那该采取什么方法呢?
2.如果可以的话,
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"Ord=1",
"Search=body",
"RelFrameId=1",
LAST);
如何处理其中的左右边界呢?因为LB与RB中都存在 " ,运行时报错如下:
Error -26377: No match found for the requested parameter "jsessionid".
谢谢!!!急。
[ 本帖最后由 dawee 于 2008-3-18 17:32 编辑 ] 引号用转义字符转换 原帖由 森林一木 于 2008-3-13 11:27 发表 http://bbs.51testing.com/images/common/back.gif
引号用转义字符转换
多谢!
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"Ord=1",
"Search=body",
"RelFrameId=1",
LAST);
我这个已经做过转义,但是运行后会提示
Error -26377: No match found for the requested parameter "jsessionid".
说明使用web_reg_save_param函数是有问题的,或者此函数的使用方法不对
那么该使用什么函数来处理呢? web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"Ord=1",
"Search=body",
"RelFrameId=1",
LAST);
改为:
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\"",
"Ord=all",
"Search=body",
"RelFrameId=1",
LAST);
然后打印出所有值看看是不是取到了sessionid. 原帖由 Zee 于 2008-3-13 13:19 发表 http://bbs.51testing.com/images/common/back.gif
改为:
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\"",
"Ord=all",
"Search=body",
...
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"NotFound=ERROR",
"Ord=all",
"Search=body",
"RelFrameId=1",
LAST);
//lr_message(lr_eval_string({jsessionid}));
j=atoi(lr_eval_string("{jsessionid_count}"));
lr_output_message("the j is %d",j);
有一句输出结果为:vuser_init.c(102): the j is 0,说明没有符合条件的 jsessionid?? 关注中 将这两行代码注释掉
j=atoi(lr_eval_string("{jsessionid_count}"));
lr_output_message("the j is %d",j);
改为:
lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
试试看
[ 本帖最后由 justsoo 于 2008-3-13 15:29 编辑 ] 报‘No match found for the requested parameter "jsessionid’这个错的话,应该是关联函数放的位置不对吧 原帖由 justsoo 于 2008-3-13 15:26 发表 http://bbs.51testing.com/images/common/back.gif
将这两行代码注释掉
j=atoi(lr_eval_string("{jsessionid_count}"));
lr_output_message("the j is %d",j);
改为:
lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}")); ...
试了你的方法,输出内容为:
vuser_init.c(104): the jsessionid is: {jsessionid}
那应该是 jsessionid 没取到值吧? 呵呵,你位置放错了。格式应该是这样的:
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"NotFound=ERROR",
"Ord=all",
"Search=body",
"RelFrameId=1",
LAST);
//这里是获取jsessionid录制的脚本函数。估计可能是web_custom_request函数吧。之后再加入打印信息函数
lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
C是面向过程的。还没为jsessionid赋值呢,当然不能正确打印出来。 原帖由 justsoo 于 2008-3-13 15:51 发表 http://bbs.51testing.com/images/common/back.gif
呵呵,你位置放错了。格式应该是这样的:
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"NotFound=ERROR",
...
web_reg_save_param("jsessionid",
"LB=result=\"true\" sessionid=\"",
"RB=\" /",
"NotFound=ERROR",
"Ord=all",
"Search=body",
"RelFrameId=1",
LAST);
// j=atoi(lr_eval_string("{jsessionid_count}"));
//lr_output_message("the j is %d",j);
lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
顺序没错。
输出信息为:
vuser_init.c(90): Registering web_reg_save_param was successful
vuser_init.c(104): the jsessionid is: {jsessionid} web_reg_save_param( );
和
lr_output_message( );
这两个函数中间有web_custom_request( )请求函数吗?
类似于这样的格式:
web_reg_save_param( );
web_custom_request( )
lr_output_message( ); 原帖由 justsoo 于 2008-3-13 16:23 发表 http://bbs.51testing.com/images/common/back.gif
web_reg_save_param( );
和
lr_output_message( );
这两个函数中间有web_custom_request( )请求函数吗?
类似于这样的格式:
web_reg_save_param( );
web_custom_request( )
lr_output_message( );
这两个中间没有 web_custom_request,我把
web_reg_save_param( );
和
lr_output_message( );
都放在了 web_custom_request( )前面。
我qq:46674478 那你就把lr_output_message( );
调到 web_custom_request( )的后面。 看看结果 仍然没有解决。期盼大家帮忙解决。
最新进展
经过与 Dennis.Duan的讨论以及其点拨,采用以下方法(左右边界为空)可以获取xml的完整内容,但是给定左右边界之后仍然是报 no match的错误。//关联从XML文件中获取 jsessionid
web_reg_save_param("jsessionid",
"LB=",
"RB=",
"NotFound=ERROR",
"Ord=1",
"Search=body",
//"RelFrameId=1",
LAST);
web_custom_request("servlet",
"URL=http://172.16.37.11/scmserver/servlet?userid=dawee&password=F578EA9AC07F28AD77BD195780B92DF2",
"Method=POST",
"Resource=0",
"RecContentType=text/xml",
"Referer=",
"Snapshot=t4.inf",
"Mode=HTTP",
"EncType=application/xml",
LAST);
//输出获取的jsessionid
lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
两个问题,仔细验证一下:
1. 代码的位置,应该放在submit代码之前,然后再submit之后进行输出验证
2. 输出验证代码,lr_output_message的写法,仔细检查
我曾经也遇到过这个问题,这个问题比较常见。相信很多人都遇到过的。 rickyzhu所言有理
甚至你extend log 打开,检查页面返回是否有jsessionid 高手如云。
页:
[1]
2