51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 10066|回复: 12
打印 上一主题 下一主题

[原创] 关于LoadRunner手动关联的问题?为什么无法关联

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-9 20:56:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我今天在做OA  loadrunner测试的时候,发现这段代码无法做手动关联,参考了很多资料也束手无策
原代码如下:

       web_custom_request("Weather.getWeather.dwr",
                "URL=http://192.168.1.100:9090/dwr/call/plaincall/Weather.getWeather.dwr",
                "Method=POST",
                "Resource=1",
                "RecContentType=text/plain",
                "Referer=http://192.168.1.100:9090/head.jsp",
                "Snapshot=t62.inf",
                "EncType=text/plain",
                "Body=callCount=1\npage=/head.jsp\nhttpSessionId=FA2D2A310C746A68A01FD3E49BE3BCA3\nscriptSessionId=6BD34CF9057629A5E83064C03FEDEA93952\nc0-scriptName=Weather\nc0-methodName=getWeather\nc0-id=0\nc0-param0=string:%E7%8F%A0%E6%B5%B7\nbatchId=0\n",
                LAST);


在录制两份脚本比较后,初步定义需要关联的部分(红色)
//httpsession1=FA2D2A310C746A68A01FD3E49BE3BCA3
//scriptSession1=6BD34CF9057629A5E83064C03FEDEA93952

web_reg_save_param("httpSession1",
"LB/IC=httpSessionId=",
"RB/IC=\nscriptSessionId=",
"ORD=1",
"search=Body",
LAST);

web_reg_save_param("scriptSession1",
"LB/IC=scriptSessionId=",

"RB/IC=\n",
"ORD=1",
"search=Body",
LAST);

web_custom_request("Weather.getWeather.dwr",
"URL=http://192.168.1.100:9090/dwr/call/plaincall/Weather.getWeather.dwr",
        ......

"Body=callCount=1\npage=/head.jsp\nhttpSessionId={httpsession1}\nscriptSessionId={scriptSession1}\nc0-scriptName=Weather\nc0-methodName=getWeather\nc0-id=0\nc0-param0=string:%E7%8F%A0%E6%B5%B7\nbatchId=0\n",
LAST);
然后把写死的(hard-coded)的资料参数化,在执行的时候检查关联却没有反应,
是什么原因? 是特殊字符的原因(\)?还是我哪一步没做好,请指教。。

[ 本帖最后由 sandsor 于 2008-3-9 21:12 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-3-9 22:17:55 | 只看该作者
把你得到的值打印出来看看。
把\n改成\\n呢?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-3-10 08:28:17 | 只看该作者
楼主按zee的,用lr_error_message("%s",lr_eval_string("{ varname}")) 打印
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-3-10 13:17:15 | 只看该作者
按zee的说法,对"\"加上 转义,
如liangjz 所说加上 lr_error_message()检查语句

//-------------------------
//http1=C05D000944884C36EA5BF229C097CD9E
//script1=943CCB2195F6593F3717E2ADB76366F5231


web_set_max_html_param_len("1024");
web_reg_save_param("http1",
  "LB/IC=httpSessionId=",
  "RB/IC=\\nscriptSessionId=",
  "Ord=all",
  "Search=Body",
  "RelFrameId=1",
  LAST);


web_reg_save_param("script1",
  "LB/IC=scriptSessionId=",
  "RB/IC=\\n",
  "Ord=all",
  "Search=Body",
  "RelFrameId=1",
  LAST);



web_custom_request("User.login.dwr",
  "URL=http://www.jingmaoju.com:9090/dwr/call/plaincall/User.login.dwr",
  "Method=POST",
  "Resource=1",
  "RecContentType=text/plain",
  "Referer=http://www.jingmaoju.com:9090/",
  "Snapshot=t18.inf",
  "EncType=text/plain",
  "Body=callCount=1\npage=/\nhttpSessionId={http1}\nscriptSessionId={script1}\nc0-scriptName=User\nc0-methodName=login\nc0-id=0\nc0-param0=string:lq\nc0-param1=string:123\nc0-param2=string:\nc0-param3=string:\nbatchId=0\n",
  LAST);
//output the value
lr_error_message("http1 value is %s",lr_eval_string("{http1}"));
lr_error_message("script1 value is %s",lr_eval_string("{script1}"));

=====================================
执行后的报告如下:(录制方式URL_based script)
---------------------------------
Action.c(175):     if (window.dwr) dwr.engine._remoteHandleBatchException({ name:'java.lang.SecurityException

Action.c(175):     ', message:'Session Error' });\r\n

Action.c(175):     else if (window.parent.dwr) window.parent.dwr.engine._remoteHandleBatchException({ name:'j

Action.c(175):     ava.lang.SecurityException', message:'Session Error' });\r\n

Action.c(175): t=11939ms: Request done "http://www.jingmaoju.com:9090/dwr/call/plaincall/User.login.dwr"   [MsgId: MMSG-26000]

Action.c(175): Error -26377: No match found for the requested parameter "http1". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size   [MsgId: MERR-26377]

Action.c(175): Notify: Saving Parameter "http1_count = 0"

Action.c(175): Error -26377: No match found for the requested parameter "script1". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size   [MsgId: MERR-26377]

Action.c(175): Notify: Saving Parameter "script1_count = 0"
Action.c(175): web_custom_request("User.login.dwr") highest severity level was "ERROR", 284 body bytes, 252 header bytes   [MsgId: MMSG-26388]
Ending action Action.

--------------------------
错误报告是什么意思,我用URL_base script 方式录制(OA是采用AJAX技术)
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-3-10 16:12:30 | 只看该作者
出错说明你没关联到数据所以script1_count = 0
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-3-10 17:14:41 | 只看该作者
会不会是不支持 Ajax 的缘故呢
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-3-10 18:47:18 | 只看该作者
你可以把左右边界避开\n, 然后使用偏移量取需要的数据长度,当然前提是这些数据长度是固定的.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-3-10 21:36:31 | 只看该作者
原帖由 zibeike 于 2008-3-10 18:47 发表
你可以把左右边界避开\n, 然后使用偏移量取需要的数据长度,当然前提是这些数据长度是固定的.


哦,我试试。。
{http1}  和 {script1}  的后面紧跟着就是 \ 符号

网上有说 LR 8.1+FP4  的 LR9.0 才支持 AJAX 的回放, 真是这样么,
我用的才是LR 8.0 啊。。。。

[ 本帖最后由 sandsor 于 2008-3-10 22:03 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-3-26 09:52:52 | 只看该作者
这个问题最终怎么解决的?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-3-26 10:12:46 | 只看该作者
做关联的地方错了!

web_custom_request已经在提交请求了, httpSessionId={http1} scriptSessionId={script1}
这里的{http1}和{script1}应该在提交之前就取得,而且也不应该从client request的data里面来确定边界,边界是从server response里面确定的 
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-3-26 10:28:52 | 只看该作者
关联函数的位置有问题,请把这个关联往前放
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-6-18 22:16:31 | 只看该作者

关联函数的位置和取的左右边界值不正确

关联函数的位置一般是放在submit_data的前面(在树形模式下右键插入,选择在之前插入),左右边界值可以从server返回的日志中得到(在runntime setting中可以选择Data returned by server,把data日志打开就可以看到了,日志文件名为:mdrv.log),注意是response中的,不是在UG中看到的request中的。
这个问题还比较好办,我碰到的问题是:在mdrv.log日志中看到的httpSessionId=dwr.getJSessionId();JSessionId是在登陆的时候在cookie中产生的。难道还要做一次关联??我的web_custome_request函数发给服务器端没有反应(在录制好的脚本中),我把web_custome_request拷贝出来单独放到一个action中就可以把命令下发下去,服务器有反应(通过日志查看到的)。
郁闷!!!请高手出马!!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2009-10-21 16:18:33 | 只看该作者

楼上的请问你说的问题

请问你说的,在runntime setting中可以选择Data returned by server,把data日志打开就可以看到了,日志文件名为:mdrv.log),注意是response中的,不是在UG中看到的request中的。
特别是"response中的,不是在UG中看到的request中的。"怎么曲分是response还是respuest在mdrv.log中
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-19 01:41 , Processed in 0.073823 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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