51Testing软件测试论坛

标题: 在生成日志中取关联值,为何总是提示找不到边界值之间的参数呢? [打印本页]

作者: very_seven    时间: 2010-8-2 17:03
标题: 在生成日志中取关联值,为何总是提示找不到边界值之间的参数呢?
我录制了一段脚本,需要做手动关联,要关联的数据在生成日志中,如下:
****** Response Header For Transaction With Id 55 ******
result=ok,authStr=h79huKF6yu65YGQWuwjAqrHHkU2j1orqMz0vn0SLHhiIdg1x83oLHttZShSurUP
$$$$$$ Response Header For Transaction With Id 55 Ended $$$$$$

然后我在LR的代码中写了个关联函数,如下:
web_custom_request("login.cgi",
  "URL=http://192.168.8.223/login.cgi?useajax=true",
  "Method=POST",
  "Resource=1",
  "Referer=http://192.168.8.223/",
  "EncType=",
  LAST);

web_reg_save_param ("authStr",
    "NOTFOUND=ERROR",
    "LB=result=ok,authStr=",
    "RB=\r" ,
    "ORD=1", LAST );

web_url("index.htm",
  "URL=http://192.168.8.223/index.htm?authStr={authStr}",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t2.inf",
  "Mode=HTML",
  LAST);

现在每次运行,在回放日志中提示:
Action.c(39): 错误 -26377: 找不到请求的参数“authStr”的匹配项。检查请求的边界是否存在于响应数据中。此外,如果要保存的数据超过 256 个字节,请使用 web_set_max_html_param_len 增加参数大小   [MsgId: MERR-26377]
Action.c(39): 通知: 正在保存参数“authStr = ”

请教各位是我关联边界值写错了吗?我觉得好像不是这个原因,因为我换了个比较好认的边界取值,还是得不到参数值,是不是不能在生成日志中做关联呢,论坛很多关联方法中都是说在回放日志中取关联值的。
可能描述得不是很清楚,附上图片,麻烦各位了,谢谢!
作者: xueying1123    时间: 2010-8-2 17:16
你要匹配的关联值是在http://192.168.8.223/login.cgi?useajax=true页面中吗?

那web_reg_save_param应该放在页面请求“web_custom_request("login.cgi",……”之前 
 
作者: very_seven    时间: 2010-8-2 17:37
标题: 回复 2# 的帖子
我要匹配的关联值时在http://192.168.8.223/index.htm?a ... tgW1UoCuDWqUC1zF7W7页面中,所以我的web_reg_save_param函数是放在下面这个代码之前的
web_url("index.htm",
  "URL=http://192.168.8.223/index.htm?authStr={authStr}",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t2.inf",
  "Mode=HTML",
  LAST);
作者: xueying1123    时间: 2010-8-2 17:56
有点乱……

authStr是通过请求下面的页面得到的参数
而下面的页面(http://192.168.8.223/index.htm?authStr={authStr})中需要调用还没有赋值的参数
作者: skyzhu    时间: 2010-8-2 18:01
标题: 回复 3# 的帖子
web_url("index.htm",  只是你要使用的地方吧,一个静态页面能有什么关联的。。。
就像2#说的,web_custom_request("login.cgi",  才是你要得到值的地方

关联参数名叫{authStr} 。。。还没开始找,又给这个请求的链接里拼上{authStr} 。。。能有才出奇了
作者: msnshow    时间: 2010-8-2 21:44
很明显,你的web_reg_save_param 放的地方不对,不可能从你要用到这个参数的页面去取这个参数的值
作者: PrefTest    时间: 2010-8-2 22:22
web_reg_save_param ("authStr",
    "NOTFOUND=ERROR",
    "LB=result=ok,authStr=",
    "RB=\r" ,
    "ORD=1", LAST );

web_custom_request("login.cgi",
  "URL=http://192.168.8.223/login.cgi?useajax=true",
  "Method=POST",
  "Resource=1",
  "Referer=http://192.168.8.223/",
  "EncType=",
  LAST);

web_url("index.htm",
  "URL=http://192.168.8.223/index.htm?authStr={authStr}",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t2.inf",
  "Mode=HTML",
  LAST);
作者: very_seven    时间: 2010-8-3 10:32
我将web_reg_save_param函数放到了
web_custom_request("login.cgi",
  "URL=http://192.168.8.223/login.cgi?useajax=true",
  "Method=POST",
  "Resource=1",
  "Referer=http://192.168.8.223/",
  "EncType=",
  LAST);
之前,但是还是找不到这个数据,我的所有的脚本如下:
Action()
{

web_set_user("root",
  lr_decrypt("4c523082364870665d0e2264"),
  "192.168.8.223:80");
web_url("192.168.8.223",
  "URL=http://192.168.8.223/",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTML",
  LAST);

lr_think_time(7);
web_set_max_html_param_len("1516");
web_reg_save_param ("authStr",
    "NOTFOUND=ERROR",
    "LB=result=ok,",
    "RB=Str=" ,
    "ORD=1", LAST );
web_custom_request("login.cgi",
  "URL=http://192.168.8.223/login.cgi?useajax=true",
  "Method=POST",
  "Resource=1",
  "Referer=http://192.168.8.223/",
  "EncType=",
  LAST);
web_url("index.htm",
  "URL=http://192.168.8.223/index.htm?authStr=7q2UqdhlbyeH9Ky4xxQX0CW9iplLPxJEG5C9DDIgSQuctgW1UoCuDWqUC1zF7W7",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t2.inf",
  "Mode=HTML",
  LAST);
web_url("top.htm",
  "URL=http://192.168.8.223/top.htm?authStr=7q2UqdhlbyeH9Ky4xxQX0CW9iplLPxJEG5C9DDIgSQuctgW1UoCuDWqUC1zF7W7",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=http://192.168.8.223/index.htm?authStr=7q2UqdhlbyeH9Ky4xxQX0CW9iplLPxJEG5C9DDIgSQuctgW1UoCuDWqUC1zF7W7",
  "Snapshot=t3.inf",
  "Mode=HTML",
  LAST);
我的本意是想将黑体部分的字符关联,然后我试着将web_reg_save_param函数放在每个脚本函数之前,但是每次都提示:
Action.c(33): 警告 -26567: 未检测到任何 HTTP 状态行。以上的未定数据和目前接收的其他数据将作为“http://192.168.8.223/login.cgi?useajax=true”的不带标头的正文进行处理   [MsgId: MWAR-26567]
Action.c(33): 错误 -26377: 找不到请求的参数“authStr”的匹配项。检查请求的边界是否存在于响应数据中。此外,如果要保存的数据超过 1516 个字节,请使用 web_set_max_html_param_len 增加参数大小   [MsgId: MERR-26377]
唉,问题还是没有解决,不过多谢各位了,我会继续努力学习的
作者: very_seven    时间: 2010-8-3 11:54
我在回放日志里找了需要关联的字符串,发现服务器响应的消息里没有我要的信息,回放日志如下:

Action.c(33): 为“http://192.168.8.223/login.cgi?useajax=true”接收的未定数据(在 HTTP 状态行之前)。数据稍后将忽略或作为正文进行处理,并在必要时打印   [MsgId: MMSG-26568]
Action.c(33): 警告 -26567: 未检测到任何 HTTP 状态行。以上的未定数据和目前接收的其他数据将作为“http://192.168.8.223/login.cgi?useajax=true”的不带标头的正文进行处理   [MsgId: MWAR-26567]
Action.c(33): “http://192.168.8.223/login.cgi?useajax=true”(RelFrameId=1)的 t=45872ms: 12 个字节响应正文
Action.c(33):     result=error
Action.c(33): web_custom_request("login.cgi") 最高严重级别为“warning”,12 个正文字节,0 个标头字节   [MsgId: MMSG-26388]

本来我需要黑体部分应该是result=ok,authStr=h79huKF6yu65YGQWuwjAqrHHkU2j1orqMz0vn0SLHhiIdg1x83oLHttZShSurUP,但是现在日志中返回了result=error,我想是不是因为这个原因,所以一直提示找不到请求的边界存在于响应数据中。不知道这个错误原因是什么?
作者: xueying1123    时间: 2010-8-3 13:01
推荐用Httpwatch查看一下你要关联的字符串出现在哪个页面的响应里面
作者: msnshow    时间: 2010-8-3 13:41
如果左右边界正确,那就是放的位置不对

你可以通过查看服务器返回的信息来确认,是哪个URL返回的,再把web_reg_save_param放在请求前面就OK了
作者: jj_ljw    时间: 2010-8-3 13:45
你的返回值在header里,不在body里面吧。关联到header里试试
作者: aliceella    时间: 2010-8-3 15:19
好像=号需要转义吧
作者: very_seven    时间: 2010-8-4 11:16
唉,郁闷啊,试过上述各位的方法了,还是没有找到,因为急着要测性能,所以让开发将这个验证字符串的函数注掉了,不过还是在此感谢各位的支招,后续我会继续尝试解决这个问题的。




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