51Testing软件测试论坛

标题: 关于web_reg_save_param函数问题 [打印本页]

作者: xiao_jie98    时间: 2005-7-11 13:58
标题: 关于web_reg_save_param函数问题
我要实现的操作是取列表中的最后一条记录,做法如下:
//定义参数
    int i;
//取最后一页的最后一条记录equId,为修改和删除做准备
    web_reg_save_param("equId",
        "LB=<input name=\"listCheck\" type=\"checkbox\" value=\"",
        "RB=\">",
        "Ord=all",
        "Search=body",
        LAST);

    i=atoi(lr_eval_string("{equId_count}"));

//然后用{equId_i}代替最后一条id
web_custom_request("TechEquEditFrame.jsp",
                "URL=http://testsvr:8080/ent/EntInfo/TechEquEditFrame.jsp?equId={equId_i}",
                "Method=GET",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t248.inf",
                "Mode=HTTP",
                LAST);
请问,我这样为什么执行不了我要修改的那条记录?错在哪?
作者: xiao_jie98    时间: 2005-7-11 14:38
用单步调试,执行完web_reg_save_param这个函数提示成功,可执行完这句:i=atoi(lr_eval_string("{equId_count}"));系统提示:“the string ‘equId_count’ with parameter delimits is not a parameter”,怎么会这样?
作者: kernzhang    时间: 2005-7-11 15:50
你怎么能这么乱用函数呢?
米在函数中间增加如下几行:
char equip_id[256];
sprintf(equp_id,"{equid_%i}",i);
lr_save_string(lr_eval_string(equip_id),"buffer");
在把buffer这个参数付给下个函数!
作者: wss123    时间: 2005-7-11 16:55
你看看{equid_count}是否用的红底字样标识,如无,请检查generator option-->parameterization 中设定的参数边界辅是否是{}.如是,则重现点右键重设参数。
------------------------------------
karenzhang斑竹,我经常用如下格式:
char user1[30];
strcpy(user1,lr_eval_string("<user>"));
直接可以作为字符串赋给user1的,和楼主的做法相同吧.不能这样的吗?

[ Last edited by wss123 on 2005-7-11 at 17:02 ]
作者: happypeach    时间: 2005-7-11 17:23
按斑竹说得~~然后将buffer值和url 使用strcat连接接就可以了

~~
但是按照lz的问题~~lz是用web_reg_save_param关联,按照
fuction reference中web_reg_save_param:
The first match is saved as A_1, the second match is saved as A_2, etc. You can retrieve the total number of matches by using the following term: ParamName_count. For example, to retrieve the total number of matches saved to the parameter array, use
TotalNumberOfMatches=atoi(lr_eval_string("{A_count}"));
这1段,
感觉直接
"URL=http://testsvr:8080/ent/EntInfo/TechEquEditFrame.jsp?equId={equId_count}"就可以。lz的想法也就是取得  equId_count值

ps:参数为web_reg_save_param中ParamNam的话,参数也会红底么?或者根本不能参数是web_reg_save_param中ParamNam?

请斑竹回答~
作者: cwj007    时间: 2005-7-11 17:49
EntInfo/TechEquEditFrame.jsp?equId={equId_i}",用法错误,上面已经有人写出正确的写法,要加一个字符串处理的过程
你说的可执行完这句:i=atoi(lr_eval_string("{equId_count}"));系统提示:“the string ‘equId_count’ with parameter delimits is not a parameter”,怎么会这样?
你先不要关联队列,你先捉一个,能不能关联上,如果可以,再扩展到两个
//\转意符在我这里显示是人民币的标志
//href='/wm/mail/read.htmlsessionid=0fe692e3f08bc1f6ef924188e70a2c137&uid=10&msgid=10&mbox=ur.u3'>高效、安全、稳定--To: User3</a>

web_reg_save_param("MailList", "LB/ic=href=\'/wm/mail/read.html?sessionid=", "RB=\'>", "Ord=All", LAST);

// check how much mails in the list
        MailCnt=atoi(lr_eval_string("{MailList_count}"));

我这段代码在我的应用中copy出来的,一定可以,我估计是你的ie中可能没有你这段内容,再试试看看
作者: kernzhang    时间: 2005-7-11 19:00
讨论这个问题首先有个前提!你的关联首先是正确的!
问问题的人首先是想将关联数组的最后一个值取到再付给下个函数!显然问问题的人参数值还没有拿出来就直接付到下个函数当然不行!
wss123:你那个方法是取得当前的参数值,而不是参数数组,那当然是可以的!如果是数组你那个方法当然不行!
happypeach的方法当然也可以!这里有两种做法,你要懂得怎样使用LR的内部变量和外部变量!做法不一样实现的方式当然不一样!
作者: xiao_jie98    时间: 2005-7-12 10:56
谢谢楼上各位的回答,特别是两位版主!
是我理解错误,原来以为只要把 i 取出来,若 i =11,那么equId_i也就=equId_11,那么equId_11里保存的就是我要的记录 id 号,可能是C里面的语言有点区别,要这么麻烦,需要输出和转换




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