zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    bcdedit无法打开启动配置数据存储拒绝访问
    linux 实现两个文件指定列的替换
    Err:12 http://security.ubuntu.com/ubuntu focalupdates/main amd64 openjdk11jreheadless amd64 11.0.11+90ubuntu2~20.04 404 Not Found [IP: 91.189.88.152 80]
    SQL的经典语句(太全了)
    反射
    多线程互操作
    C# 2.0 套接字编程实例初探
    sqlserver 导出 insert (转)
    同步方法和异步方法的区别 (转)
    数组转成 位数组 这个很好用。
  • 原文地址:https://www.cnblogs.com/NiceTime/p/10025721.html
Copyright © 2011-2022 走看看