|
**************************特别说明**********************************
该帖是转发的同行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); |
|