51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

12
返回列表 发新帖
楼主: mustwangrong
打印 上一主题 下一主题

[原创] 高手帮忙!07最后一贴!Reg_save Parameter

[复制链接]

该用户从未签到

21#
发表于 2008-1-18 23:02:58 | 只看该作者
**************************特别说明**********************************
该帖是转发的同行peach的帖子,希望对你有帮助
************************************************************************

/* -----------------------------------------------------------------------------------------------------------------------------------
Script Title       : web_submit_data && web_custom_request Script Description : 有时录制的脚本不能满足我们数据设计时的需求,如以下这种情况:
想要的结果:通过输入一批相应的记录然后添加(这一批数据需要参数化),然后再提交记录.
实际录制结果:实际录制的时,操作是一次只能增加一条记录,然后再次输入记录,添加...提交.
这时录制出来的结果就是如下web_submit_data所示.
如果是海量数据而且并发用户操作数据的话,通过参数化的操作是不能满足我们需求的.
(因为不能在web_submit_data函数中进行相应修改)
  
                        
    Solution           : 先用URL进行相应录制后,此时在高级中同时选中web_custom_request,然后找出脚本中向服务器提交请求的body部分,
         此body部分实际上就是你批量增加记录的部分.
   把其中的报文截取出来后,先找出其中规律,再拆分,然后对相应你需要的数据部分进行参数化,然后再利用c语言进行拼装,
   得到你想要的报文后.再次利用web_custom_request函数,修改其中的相应参数后,放在脚本相应位置后,就可以工作了.
 此例中我找到的body字符串如下:在对字符串进行处理时,同时也要对%处理,格式如下:

   ------------------------------------------------------------------------------------------------------------------------------------- */
    cntrTextBox=&wlw-select_key%3A%7BactionForm.EDODomainObj.cntrNList%7DOldValue=true&wlw-select_key%3A%7BactionForm.EDODomainObj.cntrNList%7D=EDOE+1000025&wlw-select_key%3A%7BactionForm.EDODomainObj.cntrNList%7D=EDOE+1000026&%7BactionForm.EDODomainObj.edoDetailDomainObj.validityDt%7D=20070916&wlw-radio_button_group_key%3A%7BactionForm.selectType%7D=0&wlw-select_key%3A%7BactionForm.EDODomainObj.edoDetailDomainObj.hlrC%7DOldValue=true&" "wlw-select_key%3A%7BactionForm.EDODomainObj.edoDetailDomainObj.hlrC%7D=AOP190&%7BactionForm.hlrCT%7D=AOP190&%7BactionForm.EDODomainObj.edoDetailDomainObj.remark%7D=

web_submit_data("create.do",  
"Action=http://192.168.1.7/EDOWeb/com/tpsbhr/epc/biz/edo/interaction/createEmptyEDOByCntrN/create.do",  
"Method=POST",  
"RecContentType=text/html",  
"Referer=http://192.168.1.7/EDOWeb/CreatEmptyEDOByCntrN.do",  
"Snapshot=t5.inf",  
"Mode=HTML",  
ITEMDATA,  
"Name=cntrTextBox", "Value=", ENDITEM,  
"Name=wlw-select_key:{actionForm.EDODomainObj.cntrNList}OldValue", "Value=true", ENDITEM,  
"Name=wlw-select_key:{actionForm.EDODomainObj.cntrNList}", "Value=EDOB 1000025", ENDITEM,  
"Name=wlw-select_key:{actionForm.EDODomainObj.cntrNList}", "Value=EDOB 1000026", ENDITEM,  
"Name={actionForm.EDODomainObj.edoDetailDomainObj.validityDt}", "Value=20070918", ENDITEM,  
"Name=wlw-radio_button_group_key:{actionForm.selectType}", "Value=0", ENDITEM,  
"Name=wlw-select_key:{actionForm.EDODomainObj.edoDetailDomainObj.hlrC}OldValue", "Value=true", ENDITEM,  
"Name=wlw-select_key:{actionForm.EDODomainObj.edoDetailDomainObj.hlrC}", "Value=AOP190", ENDITEM,  
"Name={actionForm.hlrCT}", "Value=AOP190", ENDITEM,  
"Name={actionForm.EDODomainObj.edoDetailDomainObj.remark}", "Value=", ENDITEM,  
EXTRARES,  
"Url=/EDOWeb/resources/images/buttons_en/bt_update_over.jpg", ENDITEM,  
LAST);
Action()
{
char *strtmpA;
char *strtmpB;
int i;
if ((strtmpA = (char *)malloc(2048 * sizeof(char))) == NULL) {
lr_output_message("Insufficient memory available");
return -1;
}
if ((strtmpB = (char *)malloc(1024 * sizeof(char))) == NULL) {
lr_output_message("Insufficient memory available");
return -1;
}

sprintf(strtmpA, lr_eval_string ("cntrTextBox=&wlw-select_key%%3A%%"
"7BactionForm.EDODomainObj.cntrNList%%7DOldValue=true&"));
for(i=1; i<=25; i++){
sprintf(strtmpB, lr_eval_string ("wlw-select_key%%3A%%"
"7BactionForm.EDODomainObj.cntrNList%%"
"7D=EDOE+{value}&"));
strcat(strtmpA, strtmpB);
}
sprintf(strtmpB, lr_eval_string ("%%"
"7BactionForm.EDODomainObj.edoDetailDomainObj.validityDt%%"
"7D=20070916&wlw-radio_button_group_key%%"
"3A%%7BactionForm.selectType%%"
"7D=0&wlw-select_key%%3A%%"
"7BactionForm.EDODomainObj."
"edoDetailDomainObj.hlrC%%7DOldValue=true&"
"wlw-select_key%%3A%%7BactionForm.EDODomainObj."
"edoDetailDomainObj.hlrC%%7D=AOP190&%%7BactionForm."
"hlrCT%%7D=AOP190&%%7BactionForm.EDODomainObj."
"edoDetailDomainObj.remark%%7D="));
strcat(strtmpA, strtmpB);
lr_save_string (strtmpA, "myString");
lr_output_message("%s",lr_eval_string(strtmpA));
lr_output_message("%s",lr_eval_string("{value}"));




web_custom_request("create.do",  
"URL=http://192.168.1.7/EDOWeb/com/tpsbhr/epc/biz/edo/interaction/createEmptyEDOByCntrN/create.do",  
"Method=POST",  
"Resource=0",  
"RecContentType=text/html",  
"Referer=http://192.168.1.7/EDOWeb/CreatEmptyEDOByCntrN.do",  
"Snapshot=t5.inf",  
"Mode=HTTP",  
"Body={myString}",  
LAST);
free(strtmpA);
free(strtmpB);
回复 支持 反对

使用道具 举报

该用户从未签到

22#
 楼主| 发表于 2008-1-21 12:07:59 | 只看该作者
先用URL进行相应录制后,此时在高级中同时选中web_custom_request only?还是录制之前选中?
lyscu能告诉我原帖子地址吗?51testing的搜不好用

[ 本帖最后由 mustwangrong 于 2008-1-21 18:07 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2008-1-21 18:00:01 | 只看该作者
尝试了半天,没有头绪
好像这个参数不是上一个Response不知道DEV怎么得到的
明天再说
回复 支持 反对

使用道具 举报

该用户从未签到

24#
 楼主| 发表于 2008-1-23 12:06:26 | 只看该作者

又来一个问题

同样的环境,录制
我同事有web_reg_save_param
我的没有-_-#
我们只有版本的差别,他的是8.1我的是7.6
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 13:58 , Processed in 0.061358 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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