1. 程式人生 > >LR腳本示例之常用函數

LR腳本示例之常用函數

money utf-8 tran password json code sage 端口 ret

1、變量和參數的設置

//將IP地址和端口放入到參數中
lr_save_string("127.0.0.1:1080","ip");

//退出腳本建議使用lr_exit
lr_exit(LR_EXIT_VUSER,LR_PASS);

//計算變量數組的元素個數
int arr_m1[100]; int len1=0
len1=sizeof(arr_m1)/sizeof(int);

//返回字符串的長度
char *tempStr="test is a house";
int len=0;
len=strlen(tempStr);

//在globals.h文件定義 double think_time=3;//後面可使用該變量來設置思考時間
lr_think_time(think_time);

//生成m-n之間的隨機數 rand()%(n-1)+m
lr_think_time(rand()%(n-1)+m);

//添加請求的頭的編碼信息
web_add_header("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");//提交鍵值對時的編碼信息
web_add_header("Content-Type","application/json; charset=utf-8");//提交json時的編碼信息

//提交表單時的編碼信息 設置EncType
"EncType=multipart/form-data"

//對返回結果進行編碼轉換
//lr_save_string("通過該函數獲取","response");
//LR_ENC_SYSTEM_LOCALE NULL
//LR_ENC_UTF8 utf-8
//LR_ENC_UNICODE ucs-2

//lr_convert_string_encoding(lr_eval_string("{response}"), "UTF-8","GB2312","unicodeName");//從UTF-8編碼 轉換到 GB2312 編碼存入參數 unicodeName

請求的參數中、或Body中包含特殊字符時,需要進行URL編碼
char *name="輸入了正確的數據";
lr_convert_string_encoding(name,LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8 , "unicodeName");//從系統編碼 轉換到 UTF-8 編碼存入參數 unicodeName
lr_save_string (lr_eval_string("{unicodeName}"),"urlName" );
web_convert_param("urlName", "SourceEncoding=PLAIN", "TargetEncoding=URL",LAST );


//在當前系統日期上隨機增加n-m天
vRandDay= rand() % m + n;
lr_save_datetime("%d/%m/%Y",DATE_NOW+(vRandDay)*(ONE_DAY),"pRandDay");


//返回參數數組中隨機的值
char *pName=NULL;

//通過該函數獲取 name為參數數組 為全局變量
web_reg_save_param("name",...,"ORD=ALL",LAST)
pName=lr_paramarr_random("name");


//返回參數數組中指定位置的值
char *pName2=NULL;
pName2=lr_paramarr_idx("name",i);


//獲取參數數組的數據個數
int pLen=0;
pLen=lr_paramarr_len("name");

或者

pLen=atoi(lr_eval_string("{name_count}"));


//比較2個字符串是否相等 0 相等 否則不相等
char *name1="test2"
if(strcmp(name,name1)==0)


//將字符串賦值給變量
char tempName[50];
char *name="test";
strcpy(tempName,name);


//拼接字符串
strcat(tempName,"test right");

//獲取參數的值
lr_save_string(tempName,"finalName");
lr_eval_string("{finalName}")


//將整數字符串轉換成整形並賦值給變量
int money=0;
money=atoi(lr_eval_string("{tempMoney}"));


//從 tempStr 中截取指定長度的字符,從左開始在 tempStr 字符串的 index 位置處截取,
// 截取 len-index 位字符,並存放到參數 value 中
char *str="access_token=4f7487f9-077c-4246-94f5-8ed59e87a0fc";
char *ch="&";
char *tempStr=NULL;
lr_save_var(tempStr+index+1,(len-index),0,"value");//從 index+1位置開始截取 ,截取長度為 len-index,0 表示從左邊開始截取 ,截取後的數據存放到 value參數


//分割字符
char *str="access_token=4f7487f9-077c-4246-94f5-8ed59e87a0fc";
char *ch="&";
char *tempStr=NULL;
tempStr = (char *)strtok(str,ch);
while(tempStr!=NULL)
{
len=strlen(tempStr);
for(i=0;i<len;i++)
{
if(tempStr[i]==‘=‘)
{
index=i;
break;
}
}

//從 tempStr 中截取指定長度的字符,從左開始在 tempStr 字符串的 index 位置處截取,
// 截取 index 位字符,並存放到參數 name 中
lr_save_var(tempStr+0,index,0,"name");//從 0位置開始截取 ,截取長度為 index,0 表示從左邊開始截取 ,截取後的數據存放到 value參數

tempStr = (char *)strtok( NULL, ch);
}


//設置html支持的字符長度為1024
web_set_max_html_param_len("1024");


//放在查找請求的前面,對請求響應的結果進行檢查 檢查的內容,需在返回的成功頁面保持唯一
web_reg_find("Search=All",//匹配範圍 Headers Body Noresource:不包括頭和資源 ALL
"SaveCount=successCount",//將搜索到內容的次數存到該參數
"TextPfx=",//左邊界
"TextSfx=",//右邊界
"Text/IC=Using the menu to the left",//需檢查的文本 IC忽略大小寫 當搜索的內容不固定時,可以使用左右邊界來確定
"Fail=NotFound",//找不到時,怎麽處理
"ID=",//標記調用這個函數的信息
LAST);


//獲取請求返回頁面中的數據
web_reg_save_param("name",
"LB/IC=name=\"",//左邊界 左右邊界為空,匹配整個返回的內容 邊界中包含雙引號 則需加反斜杠 加ic表示忽略大小寫匹配
"RB/IC=\" value=\"on\" />",//右邊界 ,邊界中包含雙引號 則需加反斜杠 加ic表示忽略大小寫匹配
//"Convert=HTML_TO_URL",//數據轉換 HTML_TO_URL 將html編碼數據轉換為url數據 HTML_TO_TEXT 將html編碼數據轉換為文本數據
"ORD=ALL",//匹配所有可以匹配到的內容
//"SaveLen=",//搜索到內容後,截取得指定長度的內容
//"SaveOffset=",//搜索到內容後,在偏移指定長度位置後,再截取得指定長度的內容
"Search=Body",//匹配範圍 Headers Body Noresource:不包括頭和資源 ALL
"NOTFOUND=warning",//匹配不到如何處理 error warning
LAST );

//開啟事物
lr_start_transaction("登錄");

//判斷提交登錄是否成功
if(atoi(lr_eval_string("{successCount}")) > 0)
{
//結束登錄的post請求
lr_output_message("訪問登錄結束,登錄成功");
lr_end_transaction("登錄", LR_PASS);
}
else
{
//結束登錄的post請求
lr_output_message("訪問登錄結束,登錄失敗");
lr_end_transaction("登錄", LR_FAIL);
}

web_url("請求描述",
"URL=http://{ip}/請求的參數",
"Resource=0",
"RecContentType=text/html",
"Referer=http://{ip}/請求的參數",
"Mode=HTML",
LAST);

web_submit_data("請求描述",
"Action=http://{ip}/請求的參數",
"Method=POST",
"RecContentType=text/html",
"Referer=http://{ip}/請求的參數",
"Mode=HTML",
ITEMDATA,
"Name=username", "Value=test01", ENDITEM,
"Name=password", "Value=123456", ENDITEM
LAST);

//web_custom_request請求,通用型的請求函數
//web_custom_request 中 Mode=HTTP,
//get請求 Method=GET Mode=HTTP
//post請求 Method=POST Mode=HTTP Body=請求的參數
//響應的Content-Type RecContentType=text/html 請求的content-Type EncType=application/x-www-form-urlencoded; charset=UTF-8

web_custom_request("請求描述",
"Method=POST",//提交方式
"URL=http://{ip}/請求的參數",
"Mode=HTTP",
"EncType=application/x-www-form-urlencoded",//請求的Content-Type 覆蓋web_add_[auto_]header設置的Content-Type類型
"RecContentType=text/html;",//響應的Content-Type
tempQueryString,//請求的參數,拼接出來後賦值給變量
LAST );


//使用參數 變量發送請求的列子
char *url = "ip:port";
char arr_url[1024];

//將url變量的值復制給p_url1參數
lr_save_string(url,"p_url");

//將p_url1參數的值復制給arr_url變量
strcpy(arr_url,"URL=http://");
strcat(arr_url,lr_eval_string("{p_url}"));
strcat(arr_url,"查詢的參數");

lr_output_message("通過獲取參數的值的方式發送請求");
web_url("描述1",
"URL=http://{p_url}/查詢的參數",
LAST);

lr_output_message("通過獲取變量的值的方式發送請求");
web_url("描述2",
arr_url,
LAST);

//求數組中的最小值
int arr[]={-12,-43,45,-14,-78,-16,0,3,-6,-30,-40};
int len=sizeof(arr)/sizeof(int);

int getMin(int *arr,int len)
{
int i=0;
int min=arr[0];

for(i=0;i<len;i++){
if(min>arr[i]){
min=arr[i];
}
}
return min;
}

//求數組中的最大值
int arr[]={-12,-43,45,-14,-78,-16,0,3,-6,-30,-40};
int len=sizeof(arr)/sizeof(int);

int getMax(int *arr,int len)
{
int *p=arr;
int max=*p;

for(;p<(arr+len);p++)
{
if(*p>=max1)
{
max=*p;
}
}
return max;

};

#Action控制叠代次數
Action()
{
lr_output_message("當前跌代次數%d",i);

i++;

if(i>=4)
{
lr_exit(LR_EXIT_VUSER,LR_PASS);
}
return 0;
}

LR腳本示例之常用函數