天看了关河老师的博客一篇《用LoadRunner
下载文件并保存到本地》,我很受启发,根据关河老师提供的原创脚本,我把他早博客中没有写出的那部分提供出来“我们希望每次
下载保存到本地的文件采用不同的名称,或是希望根据实际文件的后缀名动态生成后缀名”,就是对
下载的文件名做参数化操作,也算自己对
测试经验的一次积累吧,并且希望想用loadrunner录制下载脚本/参数化文件名称的同学一个很好的学习机会,尽量少走弯路。其实我在这次的编写C脚本中得到一个很大的启发,那就是平时多去学习C语言,多去看lr帮助,多去查看LR函数。
http://www.cnblogs.com/guanhe/archive/2006/06/27/436746.html
我在网上找了一个网站进行录制脚本的,这个网站不做,感觉很适合我连手呵呵:http://www.netqin.com。(里面的软件很适合智能手机哦,包月很便宜的,服务也好!)
根据关河老师的那个脚本,录制/编写完下载的脚本后,就开始参数化那个下载的文件名啦(如果我有这个需求的话)。我尝试过很多方法:
1.对 fopen("c:\\NetQin_P919_CommMaster.SIS", "wb")里的文件名的一部分919,直接在fopen()中进行参数化:fopen("c:\\NetQin_P{随机码}_CommMaster.SIS", "wb"),结果:测试失败。
2.就是使用“设一个数值的变量,然后把它转成字符串,再与前面的字符串连起来”,这里用到了strcat()连接函数。结果:参数设置成功,运行通过。
具体做法:
Action() { int flen; long filedes; char file[256]="\0"; char fuzhi[10]="\0"; char * chNumber=fuzhi; chNumber=lr_eval_string("{随机码}"); strcat(file,"c:\\NetQin_P"); strcat(file,chNumber); strcat(file,"_CommMaster.SIS"); //设置参数的最大长度,注意该值必须大于文件的大小 web_set_max_html_param_len("2000000"); //获取响应的全部内容,作为文件内容保存 web_reg_save_param("fcontent", "LB=", "RB=", "SEARCH=BODY", LAST); lr_start_transaction("down"); web_url("down.jsp", "URL=http://www.netqin.com/down.jsp?downID=30&action=Url_1", "Resource=1", "RecContentType=application/vnd.symbian.install", "Referer=", "Snapshot=t3.inf", LAST); //获取响应中的文件长度 flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); if(flen > 0) { //以写方式打开文件 if((filedes = fopen(file, "wb")) == NULL) { lr_output_message("Open File Failed!"); return -1; } //写入文件内容 fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes); //关闭文件 fclose(filedes); } lr_end_transaction("down",LR_AUTO); // lr_think_time(3); return 0; } |
运行结果:在我的机器C盘产生了三个文件(只三个参数哦,迭代三次),NetQin_P110_CommMaster.SIS、NetQin_P112_CommMaster.SIS、NetQin_P113_CommMaster.SIS
提供一个不错的文章去供大家练习字符串的操作:http://www.cnblogs.com/pent/archive/2007/12/17/1003363.html