51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8004|回复: 17
打印 上一主题 下一主题

[原创] 用LR进行WEB测试,关联cookie出错!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-5-23 17:43:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比较长~,偶慢慢说~

1,用LR录制一个内部网站的登录页面,用URL录制的。录制后并编辑的脚本如下:
vuser_init()
{
web_set_max_html_param_len("1024");

//对cookie进行的关联
// [WCSPARAM User_Cookie 62 xSGGhP3KdyMJGK53R66QMghW2sK1pp71CzF1LH3zVLJt4jcl5Dp!-882202093] Parameter {User_Cookie} created by Correlation Studio
        web_reg_save_param("User_Cookie",
                "LB=Set-Cookie: JSESSIONID=G",
                "RB=;",
                "Ord=1",
                "RelFrameId=1",
                "Search=Headers",
                LAST);

        web_url("lab",
                "URL=http://192.168.1.9/lab",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTTP",
                LAST);

        web_concurrent_start(NULL);
        web_url("css1.css",
                "URL=http://192.168.1.9/lab/css/css1.css",
                "Resource=1",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("button-dl.gif",
                "URL=http://192.168.1.9/lab/images/button-dl.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);


        web_concurrent_start(NULL);
        web_url("bg3.jpg",
                "URL=http://192.168.1.9/lab/images/bg3.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("loginbg.jpg",
                "URL=http://192.168.1.9/lab/images/loginbg.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);

        //对当前关联的参数进行输出
        lr_log_message("the init param is:%s", lr_eval_string("{User_Cookie}"));

        web_submit_data("LoginAction.do",
                "Action=http://192.168.1.9/lab/LoginAction.do",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=companyId", "Value=1", ENDITEM,
                "Name=username", "Value={user}", ENDITEM,
                "Name=password", "Value={passwd}", ENDITEM,
                LAST);

2,运行到web_submit_data就报错了:vuser_init.c(73): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MERR-26612]
vuser_init.c(73): web_submit_data highest severity level was "ERROR", 3521 body bytes, 237 header bytes          [MsgId: MMSG-27178]
Abort was called from an action.

完整的输出如下:
Virtual User Script started
Starting action vuser_init.
Web Turbo Replay of LoadRunner 7.80.0 for WINXP; Web build 2271          [MsgId: MMSG-27143]
Run-Time Settings file: "E:\fzhy\try_script\web_url\\default.cfg"          [MsgId: MMSG-27141]
vuser_init.c(7): web_set_max_html_param_len was successful          [MsgId: MMSG-27182]
vuser_init.c(11): Registering web_reg_save_param was successful          [MsgId: MMSG-27180]
vuser_init.c(19): Redirecting "http://192.168.1.9/lab" (redirection depth=0)          [MsgId: MMSG-26694]
vuser_init.c(19): To location "http://192.168.1.9/lab/"          [MsgId: MMSG-26693]
vuser_init.c(19): Redirecting "http://192.168.1.9/lab/" (redirection depth=1)          [MsgId: MMSG-26694]
vuser_init.c(19): To location "http://192.168.1.9/lab/login.jsp"          [MsgId: MMSG-26693]
vuser_init.c(19): Redirecting "http://192.168.1.9/lab/login.jsp" (redirection depth=2)          [MsgId: MMSG-26694]
vuser_init.c(19): To location "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MMSG-26693]
vuser_init.c(19): web_url was successful, 9471 body bytes, 915 header bytes, 56 chunking overhead bytes          [MsgId: MMSG-27175]
vuser_init.c(28): web_concurrent_start was successful          [MsgId: MMSG-27182]
vuser_init.c(29): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(35): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(42): web_concurrent_end was successful, 10487 body bytes, 316 header bytes          [MsgId: MMSG-27176]
vuser_init.c(45): web_concurrent_start was successful          [MsgId: MMSG-27182]
vuser_init.c(46): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(53): Registering web_url was successful          [MsgId: MMSG-27180]
vuser_init.c(60): web_concurrent_end was successful, 109454 body bytes, 346 header bytes          [MsgId: MMSG-27176]
the init param is:yTWkDZQdLw6ncsYYHm1Xx1L9ZVgTpcybkffh2mJLRVQBDr7zMyb!-882202093            //关联参数的输出
vuser_init.c(73): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MERR-26612]
vuser_init.c(73): web_submit_data highest severity level was "ERROR", 3521 body bytes, 237 header bytes          [MsgId: MMSG-27178]
Abort was called from an action.

3,查看client request和server response

开始的client Request如下:
Header:
------------------------------------------
GET /lab HTTP/1.1
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322)
Connection: Keep-Alive
Host: 192.168.1.9

Body:
------------------------------------------
No Body was sent for this HTTP request.


开始的Server Response如下:
Header:
------------------------------------------
HTTP/1.1 200 OK
Date: Tue, 23 May 2006 08:59:02 GMT
Content-Length: 5459
Content-Type: text/html;charset=GBK
Set-Cookie: JSESSIONID=GyTXDbXrn8K9BwpyMvtTGXnybJzT6HLDPkJjV4JFqvSVXQpfH90q!-882202093; path=/


SubmitData的Client Request如下:
Header:
------------------------------------------
POST /lab/LoginAction.do HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Referer: http://192.168.1.9/lab/LoginAction.do
Accept: */*
Cache-Control: no-cache
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.3); .NET CLR 1.1.4322)
Connection: Keep-Alive
Host: 192.168.1.9
Cookie: JSESSIONID=GyTXDbXrn8K9BwpyMvtTGXnybJzT6HLDPkJjV4JFqvSVXQpfH90q!-882202093
Content-Length: 37

Body:
------------------------------------------
"companyId=1&username=lab&password=lab"


SubmitData的Server Response如下:
Header:
------------------------------------------
HTTP/1.1 500 Internal Server Error
Date: Tue, 23 May 2006 08:59:03 GMT
Content-Length: 3521
Content-Type: text/html
Set-Cookie: JSESSIONID=GyTXC1QgGv0tRxJCQQb7S7mCKfjJpnPRTN1jqyNqpW7GWdWprmLc!-882202093; path=/
Connection: Close

4,偶地问题:
a:为什么关联保存的参数中的cookie和SubmitData时Header里的cookie不一样?
b:明明SubmitData的cookie和最初的server端发送的cookie一样,为什么SubmitData还返回500错误?(用户名和密码是正确的哈~)
c:为什么SubmitData又返回一个cookie?

哪位大侠看明白并且发现问题了?在下不胜感激~~~~~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-5-23 20:42:21 | 只看该作者
为什么要关联cookie
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-5-23 22:00:21 | 只看该作者

啊啊阿~斑竹~~~~

(脸红~),忘了说最初的问题,不关联cookie,还是会出现2的那个问题:
运行到web_submit_data就报错了:vuser_init.c(73): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.9/lab/LoginAction.do"          [MsgId: MERR-26612]
vuser_init.c(73): web_submit_data highest severity level was "ERROR", 3521 body bytes, 237 header bytes          [MsgId: MMSG-27178]
Abort was called from an action.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-5-23 22:02:19 | 只看该作者

接上个~

所以我就做了个关联,如果不关联能够消除这个问题,哪当然就不用做了。。。。。
汗。。。。。我是8是很迷糊。。。。。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-5-24 20:14:14 | 只看该作者
看server的log
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-5-25 10:07:00 | 只看该作者
你将record和replay的log详细的比较一下,看看为什么回放时server汇报500 error,
另外,你也看看错误的内容是什么,可能会给你一点启发。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-5-25 17:24:16 | 只看该作者
一般COOKIE是不用关联,再检查一下脚本,是否有服务器返回的参数
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2006-5-25 23:59:38 | 只看该作者

哈哈哈~问题解决了~!!!

谢谢斑竹!!谢谢楼上的各位!!!!!
其实解决的办法不是添加关联,大家说的对,不关联也可以.
我对比了录制的和回放的Client Request,把回放时header里面比录制里面缺少的内容,手工添加进去,运行OK啦!

代码如下:
vuser_init()
{
        web_url("lab",
                "URL=http://192.168.1.9/lab",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTTP",
                LAST);

        web_concurrent_start(NULL);
        web_url("css1.css",
                "URL=http://192.168.1.9/lab/css/css1.css",
                "Resource=1",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("button-dl.gif",
                "URL=http://192.168.1.9/lab/images/button-dl.gif",
                "Resource=1",
                "RecContentType=image/gif",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);


        web_concurrent_start(NULL);
        web_url("bg3.jpg",
                "URL=http://192.168.1.9/lab/images/bg3.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_url("loginbg.jpg",
                "URL=http://192.168.1.9/lab/images/loginbg.jpg",
                "Resource=1",
                "RecContentType=image/jpeg",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                LAST);

        web_concurrent_end(NULL);

       //-----添加的代码
       web_add_header("Accept_Encoding","gzip,deflate");   
       web_add_header("Accept_Language","zh-cn");
      //--------------------

        web_submit_data("LoginAction.do",
                "Action=http://192.168.1.9/lab/LoginAction.do",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.1.9/lab/LoginAction.do",
                "Snapshot=t2.inf",
                "Mode=HTTP",
                ITEMDATA,
                "Name=companyId", "Value=1", ENDITEM,
                "Name=username", "Value={user}", ENDITEM,
                "Name=password", "Value={passwd}", ENDITEM,
                LAST);

再次对大家表示感谢!!!!!希望我的问题也能给别人一点提示!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-7-21 17:37:33 | 只看该作者
其实在录制脚本时,选择录制header就可以解决这个问题
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-5-16 10:14:40 | 只看该作者
同样的问题,我选择了录制header,但还有错误.
recording options->advanced->headers,里面选择,没有错吧?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-5-16 13:37:58 | 只看该作者
顶!!!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-5-16 14:26:43 | 只看该作者
好文章
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-5-17 08:52:55 | 只看该作者
原帖由 soswhp 于 2007-5-16 10:14 发表
同样的问题,我选择了录制header,但还有错误.
recording options->advanced->headers,里面选择,没有错吧?

有人知道原因吗?
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-6-5 08:43:47 | 只看该作者

顶,感谢

顶,感谢
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-6-6 15:04:47 | 只看该作者
学到了一种解决问题的思路
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-11-22 17:11:49 | 只看该作者
很好
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2010-11-22 17:14:37 | 只看该作者
这个要顶,可以借鉴解决问题
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-6 23:34 , Processed in 0.072254 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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