问题
跳过登陆,直接设置cookie和token 进行压测时,需要知道用户的token值,从下图软件中获取需要挨个复制粘贴,较慢
解决
通过脚本账号登陆系统,获取token,直接写入参数文件中
代码实现
Action()
{
int flen;
long filedes;
char file[256]="D:\\token.txt";
web_reg_save_param_regexp(
"ParamName=Token",
"RegExp=token-test=(.*?);",
SEARCH_FILTERS,
"Scope=Cookies",
"RequestUrl=*/Login.aspx*",
LAST);
lr_start_transaction("login");
web_submit_data("Login.aspx_2",
"Action={ip}/Login.aspx",
"Method=POST",
"TargetFrame=",
"RecContentType=text/html",
"Referer={ip}/Login.aspx",
"Snapshot=t151.inf",
"Mode=HTML",
ITEMDATA,
"Name=__VIEWSTATE", "Value=/wEPDwUKLTE5NTc2MzgyN2Rkijbf9cHKLxdHWmvPwck4SSt22+8sHV3/wFeQnLqxcWU=", ENDITEM,
"Name=__VIEWSTATEGENERATOR", "Value=C2EE9ABB", ENDITEM,
"Name=__EVENTVALIDATION", "Value=/wEdAAcLnZNlnUz85ydGJj4EGdMBt93hYdIOB6Ps/2Dq0TZfLlwK8/1gnn25OldlRNyIedl/9BRvSY4VwnrafBovdLp5P1qEFGFACsSlXbPbUXTmTipfN33tJAUrNJnGsfw4NccSxqKF3aD/Hh+VrO5iCsU56vEYZcvGbRvwgNgUWYlU6hIXMxKlYTz5obWjOr6+wVo=", ENDITEM,
"Name=UserID", "Value={NewParam}", ENDITEM,
"Name=Password", "Value=111111", ENDITEM,
"Name=Code", "Value=", ENDITEM,
"Name=btnLogOn", "Value=登 录", ENDITEM,
"Name=hfwxid", "Value=", ENDITEM,
"Name=wxid", "Value=", ENDITEM,
LAST);
lr_end_transaction("login",LR_AUTO);
lr_output_message(lr_eval_string("{Token}"));
// lr_convert_string_encoding(lr_eval_string("{ResponseBody}"),"utf-8",NULL,"msg"); //很多时候返回值有中文,需要转码,转码后的值存在了msg中
// lr_output_message("转换编码后msg----%s",lr_eval_string("{msg}")); //打印返回值
flen=strlen(lr_eval_string("{Token}"));
lr_output_message("%d",flen); //打印获取的token的长度
if(flen > 0)
{
//以写方式打开文件
if ((filedes = fopen(file, "a+")) == NULL)
{
lr_output_message ("Unable to create %s");
return -1;
}
//写入文件内容
// fwrite(lr_eval_string("{Token}"),flen,1, filedes);
// fprintf(filedes,"%s ",lr_eval_string("{NewParam}"));
fprintf(filedes,"%s\n",lr_eval_string("{Token}"));
//关闭文件
fclose(filedes);
}
return 0;
}
原文 https://www.jianshu.com/p/41b525e2c3f0