51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 12665|回复: 25
打印 上一主题 下一主题

[原创] 【!已解决】【关联问题】如何获得此处的jsessionid?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-13 11:13:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
介绍系统:
基于.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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

26#
发表于 2009-10-26 12:01:49 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2009-10-23 18:21:18 | 只看该作者
请问如果是测flex,web_reg_save_param还能用吗?
我现在是测flex应用,将web_reg_save_param放在flex_amf_call前面,在没有设置边界时返回几个乱码,设置边界报错。
请各位高手指点。
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2008-3-18 17:46:46 | 只看该作者
好奇怪的情况
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2008-3-18 17:30:23 | 只看该作者

问题已解决。不知道是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。
这个能算问题么?真是汗死了。
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2008-3-17 18:11:35 | 只看该作者
关注。。
回复 支持 反对

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2008-3-17 17:54:55 | 只看该作者
原帖由 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文件的内容,但是添加了左右边界就报错,
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2008-3-17 15:33:24 | 只看该作者
高手如云。
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2008-3-16 17:45:55 | 只看该作者
rickyzhu所言有理

甚至你extend log 打开,检查页面返回是否有jsessionid
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-3-15 21:00:14 | 只看该作者
两个问题,仔细验证一下:

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

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

使用道具 举报

该用户从未签到

17#
 楼主| 发表于 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}"));
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2008-3-14 11:18:29 | 只看该作者
仍然没有解决。期盼大家帮忙解决。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-3-13 16:44:26 | 只看该作者
看看结果
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-3-13 16:37:05 | 只看该作者
那你就把lr_output_message( );
调到 web_custom_request( )  的后面。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2008-3-13 16:30:21 | 只看该作者
原帖由 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
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 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( );
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-3-13 16:11:12 | 只看该作者
原帖由 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}
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 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赋值呢,当然不能正确打印出来。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-3-13 15:44:54 | 只看该作者
原帖由 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 没取到值吧?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-3-13 15:30:20 | 只看该作者
报‘No match found for the requested parameter "jsessionid’这个错的话,应该是关联函数放的位置不对吧
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-6-20 21:56 , Processed in 0.091120 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表