springwan 发表于 2013-7-9 20:18:45

急疯了,LR手动关联后,jsessionid={jsessionid}未取到关联的值

这个问题一直困惑我很久,今天又碰到了,看到很多朋友也遇到相同的问题,发此贴,希望高手能够解决!
背景:
单点登录时获取jsessionid,在登录之前,action()里进行手动关联:
关联的代码:
        web_reg_save_param("jsessionid",
                "LB/IC=jsessionid=",
                "RB/IC=\"",
                "Ord=1",
                "NotFound=WARNING",
                "Search=Body",
                LAST);
        web_reg_save_param("lt",
                "LB/IC=<input type=\"hidden\" name=\"\lt\" value=\"",
                                 "RB/IC=\"/>",
                "Ord=1",
                "NotFound=WARNING",
                "Search=Body",LAST);

        web_url("check_cert_status.jsp", --打开此页面会获取到jsessionid

在登录动作中的关联:
login()
{        web_submit_data("login;jsessionid={jsessionid}",
                "Action=http://192.168.1.18:9001/cas_61/login;jsessionid={jsessionid}",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.1.18:9001/cas_61/login",
                "Snapshot=t3.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=username", "Value=12303013070043", ENDITEM,
                "Name=password", "Value=1234", ENDITEM,
                "Name=lt", "Value={lt}", ENDITEM,
                "Name=_eventId", "Value=submit", ENDITEM,
                "Name=submit", "Value=登录", ENDITEM,
                EXTRARES,
                "Url=images/menulist.gif", ENDITEM,
                "Url=images/book_next.png", ENDITEM,
                "Url=../favicon.ico", "Referer=", ENDITEM,
                LAST);
        return 0;}

回放时报错:
Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.1.18:9001/cas_61/login;jsessionid=qTx4Rb9CMWfn3MCYrwhwntp4Yb1Z3FdvcGVRGKZDQ8CnvFwLlg1W!79763331"       
web_submit_data("login;jsessionid={jsessionid}") highest severity level was "ERROR", 5637 body bytes, 808 header bytes       

云层 发表于 2013-7-10 09:45:41

日志不是已经关联到了么,出错应该是因为你这个数据给服务器服务器认为有问题导致的,而不是你关联的问题

springwan 发表于 2013-7-10 10:21:03

谢谢云层
我也感觉关联取到了值,但是不知道怎样才可以正确赋值,传送到服务器中。
请指教,谢谢!

star_xing815 发表于 2013-7-10 11:24:00

同有这样的疑惑,这个数据怎样才能正确取到呢?

springwan 发表于 2013-7-10 11:44:19

是的,看到好多帖子关于这个问题,但都没有解决的办法,期待云层等高手帮助!

云层 发表于 2013-7-10 15:30:46

3个字,问开发

springwan 发表于 2013-7-10 16:37:11

web_reg_save_param("jsessionid",
                "LB/IC=cas_61/login;jsessionid=",
                "RB/IC=\"",
                "Ord=1",
                "NotFound=WARNING",
                "Search=All",
                LAST);

        web_reg_save_param("lt",
                "LB/IC=<input type=\"hidden\" name=\"lt\"\r\n    value=\"",
                "RB/IC=\"",
                "Ord=1",
                "NotFound=WARNING",
                "Search=All",
                LAST);
        web_url("check_cert_status.jsp",
                "URL=http://192.168.3.18:9014/cas_61/check_cert_status.jsp",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t2.inf",
                "Mode=HTML",
                EXTRARES,
                "Url=images/livecom_h_default_ngls_str.jpg", "Referer=http://192.168.3.18:9014/cas_61/login", ENDITEM,
                "Url=images/dot-h.gif", "Referer=http://192.168.3.18:9014/cas_61/login", ENDITEM,
                "Url=../favicon.ico", "Referer=", ENDITEM,
                LAST);
   lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
lr_output_message("the It is: %s", lr_eval_string("{It}"));

回放结果:Action.c(43): the jsessionid is: 6LR5RdXTKWNfFsvncykLy4txXMG6Lcthw68kLJMp5MTH5dSQv99C!79763331
Action.c(44): the It is: {It}---
        web_submit_data("login;jsessionid={jsessionid}",
                "Action=http://192.168.3.18:9014/cas_61/login;jsessionid={jsessionid}",
                "Method=POST",
                "RecContentType=text/html",
                "Referer=http://192.168.3.18:9014/cas_61/login",
                "Snapshot=t3.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=username", "Value=4403013070043", ENDITEM,
                "Name=password", "Value=Test1234", ENDITEM,
                "Name=lt", "Value={lt}", ENDITEM,
                "Name=_eventId", "Value=submit", ENDITEM,
                "Name=submit", "Value=登录", ENDITEM,
                EXTRARES,
                "Url=images/menulist.gif", ENDITEM,
                "Url=images/book_next.png", ENDITEM,
                "Url=../favicon.ico", "Referer=", ENDITEM,
                LAST);
    lr_output_message("the jsessionid is: %s", lr_eval_string("{jsessionid}"));
回放结果:lgoin.c(4): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.3.18:9014/cas_61/login;jsessionid=6LR5RdXTKWNfFsvncykLy4txXMG6Lcthw68kLJMp5MTH5dSQv99C!79763331"       
可见是{It}没有取到值导致登录失败,打开http://192.168.3.18:9014/cas_61/check_cert_status.jsp页面,查看源代码
<input type="hidden" name="lt" value="_cEA9E6218-B5B9-7379-8862-EB3ED0239B6F_kEE910C9A-FA7F-04A6-BDC1-7B52C41363E9" />
It的左右边界应该没放错,位置也应该在http://192.168.3.18:9014/cas_61/check_cert_status.jsp,如果是的话也应该没错。
那么,问题出在哪里呢?

springwan 发表于 2013-7-10 16:57:02

在回放的日志中有:
Action.c(31): Warning -26377: No match found for the requested parameter "lt". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 256 bytes, use web_set_max_html_param_len to increase the parameter size       

云层 发表于 2013-7-10 17:15:56

你lt没数据,出错自然而然了

springwan 发表于 2013-7-10 17:24:39

It变量和jsessionid在一各body中,现在关联和jsessionid的关联放同一各jsp前,位置应该没有错
另从页面的源代码中查看:
<input type="hidden" name="lt" value="_cEA9E6218-B5B9-7379-8862-EB3ED0239B6F_kEE910C9A-FA7F-04A6-BDC1-7B52C41363E9" />

      web_reg_save_param("lt",
                "LB/IC=<input type=\"hidden\" name=\"lt\"\r\n    value=\"",
                "RB/IC=\"",
                "Ord=1",
                "NotFound=WARNING",
                "Search=All",
                LAST);
错了吗?把"Search=All",改成"Search=body",也同样取不到

springwan 发表于 2013-7-10 21:25:26

自己顶一下

springwan 发表于 2013-7-10 23:04:20

springwan 发表于 2013-7-10 23:04:38

顶一下

shigui3615 发表于 2013-7-11 10:53:23

将关联函数"LB/IC=<input type=\"hidden\" name=\"lt\"\r\n    value=\"", 的\r\n 删掉试试,从你10楼服务器返回的信息看,你的左边界设的不对。

springwan 发表于 2013-7-11 12:46:23

回复 14# shigui3615


去掉也仍然是报此错,

感谢你的回复

450174661 发表于 2013-7-11 13:18:28

手动关联有时候是会出现一些奇怪的问题,自动关联试试

450174661 发表于 2013-7-11 13:19:45

手动关联有时候是会出现一些奇怪的问题,我之前也出现一模一样的关联代码,一个是好的 ,一个就是报错;


你试试自动关联,看看行不行,行的话,再与你的手动关联脚本对比,看看手动关联脚本问题处在哪里

springwan 发表于 2013-7-11 14:10:55

自动关联jsessionid的错,It系统没有捕获到自动关联,

hsr13 发表于 2013-7-12 01:03:03

回放的日志中有:
Action.c(31): Warning -26377: No match found for the requested parameter "lt". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 256 bytes, use web_set_max_html_param_len to increase the parameter size         

It返回的"Value"太长,默认无法存放到It变量中,请在关联函数web_reg_save_param之前加一句:web_set_max_html_param_len("1024"); 就不会报size错误了,这样It返回的值就能保存下来,希望能解决你的问题。

new_lio 发表于 2013-7-12 17:56:01

这根本没到1024这个长度
管理左右边界是不要取值的

你的那个jsessionid关联的值,能成功 跑通吗
能跑通,就要仔细查看下源码了,那个关联到值的左右边界,明显不在你贴的那句代码里面
页: [1] 2 3
查看完整版本: 急疯了,LR手动关联后,jsessionid={jsessionid}未取到关联的值