LR上传和下载文件

背景:测试中,有一个模块涉及上传和下载文件。

步骤:这里直接上脚本:

*** 上传文件 ***

web_submit_data("upLoadFile",

          "Action=https://{domain}:10001/v1/worksheet/upLoadFile/",

          "Method=POST",

          "EncType=multipart/form-data",     // 文件的传输格式。一般接口文档中会有。没有的话也可以抓包查看

          "TargetFrame=",

          "RecContentType=application/json",

          "Referer=https://{domain}:10001/console/",

          "Snapshot=t9.inf",

          "Mode=HTML",

        ITEMDATA,

          "Name=file", "Value=C:\\upload\\test.png", "File=Yes", ENDITEM,    // 录制时这里只有文件名,但需要添加上传文件的绝对路径,否则回放时会报找不到文件的错误

          "Name=description", "Value=", ENDITEM,

          "Name=id", "Value={sheetId}", ENDITEM,   // 这里是关联的前面表单单号

          LAST);

*** 下载文件 ***

int flen;    // 文件长度

long filedes;   // 文件内容

char filepath[100] = "C:\\downloads\\test_";  // 文件存放路径和文件名

......   // 省略部分为其他操作

web_set_max_html_param_len("400000");    // 注意该值必须大于文件大小。实际上,这里就瞎蒙了一个值。

web_reg_save_param("fcontent",     // 获取响应的全部内容,作为文件保存内容

                                         "LB=",     // 这里不用写左右边界

                                         "RB=",

                                         "SEARCH=BODY",

                                         LAST); 

strcat(filepath, lr_eval_string("{nums}"));   // 这里是拼接一个随机的文件名。随机数的产生见下文。

strcat(filepath, ".png");   // 拼接后缀

flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);  //获取响应中的文件长度

if(flen > 0)

{

    if((filedes=fopen(filepath,"wb")) == NULL)    // 以写的方式打开文件。这个文件就是要保存的目标文件

    {

        lr_output_message("文件操作失败");

        return -1;

    }else{

        fwrite(lr_eval_string("{fconent}"),flen,1,fileds);   //写入文件内容

        fclose(fileds);//关闭文件

    }

}

return 0;

PS:

1. 生成随机数的方法,除了使用rand()外,还可以这样用:参数列表中,新建一个参数名称,在Parameter type中选择“Random Number”

2. 在下载文件并保存到本地时,耗费了较长时间。因为没把脚本理解到。fopen(filepath, "wb");这里filepath就是想要保存的文件路径和文件名。

网上的参考资料:

https://www.cnblogs.com/yezhaohui/archive/2013/07/28/3221440.html

https://www.cnblogs.com/guanhe/archive/2006/06/27/436746.aspx

猜你喜欢

转载自blog.csdn.net/aduocd/article/details/81706754