51Testing软件测试论坛

标题: 【!已解决】【关联问题】如何获得此处的jsessionid? [打印本页]

作者: dawee    时间: 2008-3-13 11:13
标题: 【!已解决】【关联问题】如何获得此处的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
引号用转义字符转换
作者: dawee    时间: 2008-3-13 11:57
原帖由 森林一木 于 2008-3-13 11:27 发表
引号用转义字符转换


多谢!
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函数是有问题的,或者此函数的使用方法不对
那么该使用什么函数来处理呢?

作者: Zee    时间: 2008-3-13 13:19
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.
作者: dawee    时间: 2008-3-13 14:06
原帖由 Zee 于 2008-3-13 13:19 发表


改为:
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??
作者: 54111    时间: 2008-3-13 14:40
关注中
作者: justsoo    时间: 2008-3-13 15:26
将这两行代码注释掉
    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 编辑 ]
作者: 天地一剑    时间: 2008-3-13 15:30
报‘No match found for the requested parameter "jsessionid’这个错的话,应该是关联函数放的位置不对吧
作者: dawee    时间: 2008-3-13 15:44
原帖由 justsoo 于 2008-3-13 15:26 发表
将这两行代码注释掉
    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 没取到值吧?
作者: justsoo    时间: 2008-3-13 15:51
呵呵,你位置放错了。格式应该是这样的:
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赋值呢,当然不能正确打印出来。
作者: dawee    时间: 2008-3-13 16:11
原帖由 justsoo 于 2008-3-13 15:51 发表
呵呵,你位置放错了。格式应该是这样的:
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          [MsgId: MMSG-26390]
vuser_init.c(104): the jsessionid is: {jsessionid}
作者: justsoo    时间: 2008-3-13 16:23
web_reg_save_param( );

lr_output_message( );
这两个函数中间有web_custom_request( )请求函数吗?

类似于这样的格式:
web_reg_save_param( );
web_custom_request( )
lr_output_message( );
作者: dawee    时间: 2008-3-13 16:30
原帖由 justsoo 于 2008-3-13 16:23 发表
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
作者: justsoo    时间: 2008-3-13 16:37
那你就把lr_output_message( );
调到 web_custom_request( )  的后面。
作者: qitengfeng    时间: 2008-3-13 16:44
看看结果
作者: dawee    时间: 2008-3-14 11:18
仍然没有解决。期盼大家帮忙解决。
作者: dawee    时间: 2008-3-14 17:12
标题: 最新进展
经过与 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}"));

作者: rickyzhu    时间: 2008-3-15 21:00
两个问题,仔细验证一下:

1. 代码的位置,应该放在submit代码之前,然后再submit之后进行输出验证
2. 输出验证代码,lr_output_message的写法,仔细检查

我曾经也遇到过这个问题,这个问题比较常见。相信很多人都遇到过的。
作者: liangjz    时间: 2008-3-16 17:45
rickyzhu所言有理

甚至你extend log 打开,检查页面返回是否有jsessionid
作者: 大漠飞鹰    时间: 2008-3-17 15:33
高手如云。
作者: dawee    时间: 2008-3-17 17:54
原帖由 rickyzhu 于 2008-3-15 21:00 发表
两个问题,仔细验证一下:

1. 代码的位置,应该放在submit代码之前,然后再submit之后进行输出验证
2. 输出验证代码,lr_output_message的写法,仔细检查

我曾经也遇到过这个问题,这个问题比较常见。相信很多 ...


第一个:服务器是在收到 登录请求之后返回 jsessionid的,我的web_reg_save_param放在了这个request前,lr_output_message放在了这个请求之后。

第二个:lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
看来看去也没看出问题来...

关键就是 左右边界为空时可以获取整个xml文件的内容,但是添加了左右边界就报错,
作者: mustwangrong    时间: 2008-3-17 18:11
关注。。
作者: dawee    时间: 2008-3-18 17:30
标题: 问题已解决。不知道是LR自己的处理规则还是bug
以下是xml文件中的内容:
<body>
  <rows result="true" sessionid="0000xFi0mTEvo0yfZd-BXgPXXkE:123456780" />
  </body>

为了获取 sessionid,采用以下左右边界:
        web_reg_save_param("jsessionid",
                        "LB=sessionid=\"",
                        "RB=\" />",
                        "ORD=1",
                        "Search=body",
                        LAST);

始终报错。

今天偶然将左右边界进行了修改,将 " 改为了 ',而且不进行转义,
        web_reg_save_param("jsessionid",
                        "LB=sessionid='",
                        "RB=' />",
                        "ORD=1",
                        "Search=body",
                        LAST);

问题解决了。取出了sessionid。
这个能算问题么?真是汗死了。
作者: qitengfeng    时间: 2008-3-18 17:46
好奇怪的情况
作者: wangz2223    时间: 2009-10-23 18:21
请问如果是测flex,web_reg_save_param还能用吗?
我现在是测flex应用,将web_reg_save_param放在flex_amf_call前面,在没有设置边界时返回几个乱码,设置边界报错。
请各位高手指点。
作者: xwlong    时间: 2009-10-26 12:01
学习了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2