LR脚本示例之常用函数
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脚本示例之常用函数的更多相关文章
- LR脚本用户自定义C语言函数
		
LR脚本实战:用户自定义C语言函数 Loadrunner可以使用标准C语言的函数,因此我们可以在脚本中编写自己的函数用于调用,把脚本结构化,更好的进行重用. 先看一个例子: Action() { in ...
 - 【笔记】LR录制方式和常用函数
		
本文为本人复习LR时,笔记整理.以备后续查阅. 注意:录制脚本时,选择不同的协议下录制时设置选项也是不相同的,我们这里介绍的是基于协议web(http/html)录制选项设置. 对于web(http/ ...
 - LoadRunner  脚本开发和常用函数
		
开发性能测试脚本原则.简单 正确 高效 在lr中,脚本运行是解释执行的.所以在运行时,需要先编译. 局部变量和全局变量 1.在init.action.end中定义的变量就是局部变量 2.在global ...
 - 彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义
		
原文 http://www.cnblogs.com/Bonnie83/p/3525200.html 初学性能测试时候,第一步必学脚本录制,但一路下来各种录制失败.回放脚本失败的问题层出不穷,究其原因 ...
 - 彻底抛弃脚本录制,LR脚本之使用web_custom_request函数自定义http请求
		
初学性能测试时候,第一步必学脚本录制,但一路下来各种录制失败.回放脚本失败的问题层出不穷,究其原因一是LR本身存在对测试环境的兼容性问题导致录制失败,更深层次的原因是录制者不清楚LR录制脚本的原理,或 ...
 - LR脚本示例之参数_变量介绍
		
Action(){ char *url = "127.0.0.1:1080"; char arr_url[1024]; //将url变量的值复制给p_url1参数 lr_save_ ...
 - LR脚本示例之URL请求(post、get)
		
Action(){ //application/x-www-form-urlencoded //application/json //web_add_auto_header("Content ...
 - LR常用函数以及调用自定义函数
		
2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...
 - LR常用函数
		
web_set_max_html_param_len()--常用函数 设置可检索并保存为参数的任何HTML字符串的最大长度. intweb_set_max_html_param_len(const c ...
 
随机推荐
- iView之select获取value和label
			
使用:label-in-value="true" @on-change="obtainValue" 详见官方文档:https://www.iviewui.com ...
 - linux c二级指针的内存分配和使用
			
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h> ...
 - Guid.NewGuid().ToString()的几种格式 (转)
			
1.Guid.NewGuid().ToString("N") 结果为: 38bddf48f43c48588e0d78761eaa1ce6 2.Guid.NewGuid() ...
 - UniqueIdentifier 数据类型
			
UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...
 - JavaScript 的基本语法
			
说明:此类博客来自以下链接,对原内容做了标注重点知识,此处仅供自己学习参考! 来源:https://wangdoc.com/javascript/basic/introduction.html 1. ...
 - SCUT - 299 - Kaildls的数组划分 - dp - 高精
			
https://scut.online/p/299 \(dp[i][k]\) 为前 \(i\) 个数分 \(k\) 组的最大值,那么 $dp[i][k]=max_{p=1}^{i-1}{dp[p][k ...
 - js获取当前地址栏的域名、Url、相对路径和参数以及指定参数
			
以下代码整理于网络 1.设置或获取对象指定的文件名或路径. window.location.pathname 例:http://localhost:8086/topic/index?topicId=3 ...
 - appium服务——封装生成可用端口
			
一.判断端口是否可用 1.在windows中判断端口是否可用,使用dos命令"netstat -ano| findstr 8080".运行结果有如下两种 如果没有被占用,就是结果为 ...
 - 3分钟简单了解 prototype 和 __proto__
			
关于prototype 1. 所有的函数都会有一个prototype属性,属性值是一个普通对象: 2. 当我们去new一个构造函数的实例时,构造函数的原型对象(prototype)会被赋值给它实例的[ ...
 - Opencv级联分类器实现人脸识别
			
在本章中,我们将学习如何使用OpenCV使用系统相机捕获帧.org.opencv.videoio包的VideoCapture类包含使用相机捕获视频的类和方法.让我们一步一步学习如何捕捉帧 - 第1步: ...