急疯了,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 日志不是已经关联到了么,出错应该是因为你这个数据给服务器服务器认为有问题导致的,而不是你关联的问题 谢谢云层
我也感觉关联取到了值,但是不知道怎样才可以正确赋值,传送到服务器中。
请指教,谢谢! 同有这样的疑惑,这个数据怎样才能正确取到呢? 是的,看到好多帖子关于这个问题,但都没有解决的办法,期待云层等高手帮助! 3个字,问开发 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,如果是的话也应该没错。
那么,问题出在哪里呢? 在回放的日志中有:
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 你lt没数据,出错自然而然了 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",也同样取不到 自己顶一下 顶一下 将关联函数"LB/IC=<input type=\"hidden\" name=\"lt\"\r\n value=\"", 的\r\n 删掉试试,从你10楼服务器返回的信息看,你的左边界设的不对。 回复 14# shigui3615
去掉也仍然是报此错,
感谢你的回复 手动关联有时候是会出现一些奇怪的问题,自动关联试试 手动关联有时候是会出现一些奇怪的问题,我之前也出现一模一样的关联代码,一个是好的 ,一个就是报错;
你试试自动关联,看看行不行,行的话,再与你的手动关联脚本对比,看看手动关联脚本问题处在哪里 自动关联jsessionid的错,It系统没有捕获到自动关联, 回放的日志中有:
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返回的值就能保存下来,希望能解决你的问题。 这根本没到1024这个长度
管理左右边界是不要取值的
你的那个jsessionid关联的值,能成功 跑通吗
能跑通,就要仔细查看下源码了,那个关联到值的左右边界,明显不在你贴的那句代码里面