在数据准备的时候遇到一个问题,如”Value=zla001”我想由两部分组成,“zla”和001,我想zla做为一个标识,后面的001是个可变的量,像可以递增之类的。以前我有一种做法,就是用robot录制脚本改一下,然robot自动将有规律的数据大量生成到*.txt文档里面,然后再在LR脚本里面把Value后面的值参数化,值就从*.txt中读取。这样可以达到目的,但昨天发现robot好像慢了点,另外,先把数据生成到*.txt,然后再从*.txt中取数据本身就比较麻烦。后来我想既然robot的脚本能改成“zla”+str(i)的样子,LR没有道理不能改成类似的样子。下面就是我经过反复的试验,加上向李正新取了些经最终得到我想要的样子。
下面是改后的action中的脚本,里面添加了一些简单的注释,Action每运行一次,i值加1。
#include "web_api.h"
unsigned long int i=200000;//这里我用了unsigned long int,为了可以产生很多的数据
char lValue[11]=”i”;//存放转换为字符串的i值
int length=0;
Action()
{ char value[10]="Value=zla"; //存放“Value=”+标识“zla”
i=i+1;
web_url("Add",
"URL=http://****/Add",
"Resource=0",
"RecContentType=text/html",
"Referer=http:// ****/menu.jsp",
"Snapshot=t4.inf",
"Mode=HTML",
LAST);
itoa( i, lValue, 10); //把i的值换成字符串存放在lValue里面
length=strlen(lValue);
web_submit_form("Submit_2",
"Snapshot=t5.inf",
ITEMDATA,
"Name=name", strncat(value, lValue, length), ENDITEM,//Value拼接
//上面开始我用的是strcat,结果发现生成的值的最后多了一个“&”,
//所以就想办法用strncat把“&”去掉了
//上面相当于是:
//"Name=name", "Value=zla"+i, ENDITEM, 但不能这样写
"Name=phone", "Value=", ENDITEM,
"Name=mobile", "Value=", ENDITEM,
"Name=email", "Value=", ENDITEM,
"Name=address", "Value=", ENDITEM,
LAST);
return 0;
}
注意的地方:
1.i=i+1;必须放在Action(){}里面,不能放在它上面
2. char lValue[11] 和 char value[10]必须用数组形式,不能用char * value形式,否则,在运行到itoa( i, lValue, 10) 和 strncat(value, lValue, length)出错
3. strncat(value, lValue, length)不能写成strncat("Value=zla", lValue, length)形式,否则运行出错
至于为什么LR脚本里面有这么多限制我也不清楚,所以破费周折,不过在我的艰苦追打下终于把它干掉了哈哈
4.Action()里面的部分循环运行,它上面的部分只运行一次