dawee 发表于 2008-3-13 11:13:50

【!已解决】【关联问题】如何获得此处的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:44

引号用转义字符转换

dawee 发表于 2008-3-13 11:57:37

原帖由 森林一木 于 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函数是有问题的,或者此函数的使用方法不对
那么该使用什么函数来处理呢?

Zee 发表于 2008-3-13 13:19:22

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:56

原帖由 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??

54111 发表于 2008-3-13 14:40:34

关注中

justsoo 发表于 2008-3-13 15:26:50

将这两行代码注释掉
    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:20

报‘No match found for the requested parameter "jsessionid’这个错的话,应该是关联函数放的位置不对吧

dawee 发表于 2008-3-13 15:44:54

原帖由 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 没取到值吧?

justsoo 发表于 2008-3-13 15:51:34

呵呵,你位置放错了。格式应该是这样的:
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:12

原帖由 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}

justsoo 发表于 2008-3-13 16:23:10

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:21

原帖由 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

justsoo 发表于 2008-3-13 16:37:05

那你就把lr_output_message( );
调到 web_custom_request( )的后面。

qitengfeng 发表于 2008-3-13 16:44:26

看看结果

dawee 发表于 2008-3-14 11:18:29

仍然没有解决。期盼大家帮忙解决。

dawee 发表于 2008-3-14 17:12:13

最新进展

经过与 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:14

两个问题,仔细验证一下:

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

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

liangjz 发表于 2008-3-16 17:45:55

rickyzhu所言有理

甚至你extend log 打开,检查页面返回是否有jsessionid

大漠飞鹰 发表于 2008-3-17 15:33:24

高手如云。
页: [1] 2
查看完整版本: 【!已解决】【关联问题】如何获得此处的jsessionid?