LoadRunner手写脚本

HTTP协议方法--GET

web_url()

C Language

        int web_url( const chat *StepName, const char *url, <List of Attributes>, [EXTRARES,<List of Resource Attributes> , ] LAST);

        const char *Stepname\*url        ========定义必填的常量

        <>         =======可选的 属性参数

        []         =======可选的 资源参数

        EXTRARES         ========分隔符号 标记下一个参数是资源属性的列表

        ITEMDATA         ========属性和数据字段列表之间分割标识符

        ENDITEM         ========行资源结束标识符

        LAST         ===========结束表示符

HTTP协议方法--POST

web_submit_data()

上下文无依赖使用

        int web_submit_data(const char *StepName, const chat *Action, <List of Attributes>, ITEMDATA, <List of data>, [EXTRARES, <List of Resource Attributes>,] LAST);

web_submit_form()

上下依赖使用

        int web_submit_form(cons char *StepName,<List of Attributes> , <List of Hidden Fields>, ITEMDATA, , [EXTRARES, <List of Resource Attributes>,] LAST);

web_custom_request()

所有HTTP请求都适用

        int web_custom_request( const char *RequestName, <List of Attributes>, [EXTRARES, <List of Resource Attributes>,] LAST);

定义变量

常见变量定义

定义字符串

指定长度,超过长度就会报错,一个汉字是2个字符长度:

char parm[];

不限长度:

char *var;

定义整型

int num;

定义浮点型

float fla;

变量之间转换

atoi()

Converts a string to an integer value.

int atoi( const char *String);

itoa()

Converts an integer to a string. Windows only.

int itoa( int value, char *str, int radix);

atof()

Converts a string to a floating point value.

double atof( const char *string);

定义参数

lr_save_string()

Saves a null-terminated string to a parameter.

int lr_save_string( const char *param_value, const char *param_name);

lr_save_int()

Saves an integer to a parameter.

int lr_save_int( int value, const char *param_name);

其他函数

lr_eval_string();

Returns the string argument after evaluating embedded parameters.

char lr_eval_string( const char *instring );

eg:

int param_key = 1000

lr_output_message("=====>param_key转化为%s", lr_eval_string("{param_key}")); ------>讲参数1000转化为字符串打印

注册函数

web_reg_find()

Registers a search for a text string on an HTML page.

int web_reg_find( const char *attribute_list, LAST );

与web_find()函数区别:

web_reg_save_param_ex()

Registers a request to save dynamic data located between specified boundaries. The data is saved to a parameter.

填写左右边界,中间的就是取值。

int web_reg_save_param_ex( "ParamName=", [LB[/IC][BIN]=, ][RB[/IC][BIN]=, ] , ,LAST );

局部/全局变量

局部变量

在action中定义的变量

只能在当前action中被引用,init、end都是区分的

全局变量

在globals.h文件中定义变量

在所有action中,都可以被引用

其他注意事项

变量定义,只能在文件头部进行定义,不然会报错

逻辑运算符

运算符

  •         == 逻辑等于
  •         ! 非
  •         != 不等于
  •         && 与
  •         || 或

条件语句

if语句

if(条件)

{

        条件成立,执行脚本;

}

else if(条件)

{

}

else

{

}

if常用方法(一)

用web_reg_find函数,查找出现次数,判断SaveCount的变量值

if(atoi(lr_eval_string("{save_count}"))>0)

{

        lr_outpurt_message("reg_count = %s", lr_eval_string("{save_count}"));

}

else

{

        lr_output_message("预期结果和实际不符,查找到的次数为:%s", lr_eval_string("{reg_count}"));

}

if常用方法(二)

判断一个参数的值,是否与预期结果相同

if(strcmp(lr_eval_string("{reg_count}"),"expect") == 0)

{

        lr_outpurt_message("reg_count = %s", lr_eval_string("{save_count}"));

}

else

{

        lr_output_message("预期结果和实际不符,查找到的次数为:%s", lr_eval_string("{reg_count}"));

}

if常用方法(三)

判断一个参数的长度,是否与预期结果相同

lr_save_string("loadrunner", "classname");

if(strlen(lr_eval_string("{classname}")) == 0 )

{

        lr_outpurt_message("classname的长度为0");

}

else

{

        lr_outpurt_message("classname的值为:%s", lr_eval_string("{classname}"));

}

if常用方法(四)

获取请求的响应码,通过响应码判断请求成功

int rspcode;

rspcode = web_get_int_property(HTTP_INFO_RETURN_CODE);

if(respcode == 200)

{

        条件成立,执行脚本;

}

else

{

}

循环语句

for循环

int i;

for(i=0;i<=4;i++){

        循环体;

}

while循环

int i=1;

while(i<10)

{

        lr_output_message();

        i++;

}

do...while循环

int i=1;

do{

        lr_output_message();

        i++;

}

while(i<10);

响应结果转码

编码

中文转码

把内容,转换为当前系统的编码,从而实现响应中文正常显示

lr_convert_string_encoding(lr_eval_string({param}"),LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"convert_reg_rsp");

或者

lr_convert_string_encoding(lr_eval_string("{param}"), "utf-8", NULL, "convert_reg_rsp");

lr_output_message("convert_rsp:%s", lr_eval_string("{convert_reg_rsp}"));         //显示结果

**此文档最后的综合样例

        采用测试tmall系统的登录、退出,使用到了注册查找函数、注册关联保存函数、if判断、字符串转数字函数atoi()、请求状态码获取函数web_get_int_property()、web_add_header()等

下边直接将action().c脚本放出:

Action()
{

    int loginout_rscode;

    web_add_auto_header("Accept-Language", 
        "zh-CN,zh;q=0.9");
    
    lr_save_string("http://47.109.94.131:8081/tmall","url");
    
    web_reg_save_param_ex(
        "ParamName=login_info",
        "LB={",
        "RB=}",
        SEARCH_FILTERS,
        "Scope=ALL",
        LAST);
    
    web_reg_save_param_ex(
        "ParamName=login_cookie",
        "LB=Set-Cookie: ",
        "RB=; Path=",
        SEARCH_FILTERS,
        "Scope=ALL",
        LAST);

    web_reg_find("Text={\"success\":true}",
        "SaveCount=LoginCount",
        LAST);

    lr_start_transaction("login");
    
    web_submit_data("doLogin", 
        "Action={url}/login/doLogin", 
        "Method=POST", 
        "RecContentType=application/json", 
        "Referer={url}/login", 
        "Snapshot=t6.inf", 
        "Mode=HTML", 
        ITEMDATA, 
        "Name=username", "Value=pangchuan", ENDITEM, 
        "Name=password", "Value=123456qwer", ENDITEM, 
        LAST);
    
    
    if(atoi(lr_eval_string("{LoginCount}")) > 0){
        lr_output_message("登录成功!");
        lr_end_transaction("login", LR_PASS);
    }else{
        lr_error_message("登录失败!");
        lr_end_transaction("login", LR_FAIL);
    }
    
    lr_output_message("登录返回的信息为:%s", lr_eval_string("{login_info}"));
    
    //打印通过关联注册函数获取到的login_cookie值

    lr_output_message("login_cookie的值为:%s", lr_eval_string("{login_cookie}"));
    
    // 退出登录增加请求头的cookie

    web_add_header("Set-Cookie", "{login_cookie}");
    
    lr_start_transaction("login_out");

    web_url("login_out",
        "URL={url}/login/logout",
        "TargetFrame=",
        "Resource=1",
        "Referer=",
        "Mode=HTML",
        LAST);
    
    // 通过请求状态码判断是否退出登录成功,并将事务做一个pass或者是fail
    
    loginout_rscode = web_get_int_property(HTTP_INFO_RETURN_CODE);

    if(loginout_rscode == 200){
        lr_output_message("退出登录成功,http请求状态码为:%d", loginout_rscode);
        lr_end_transaction("login_out", LR_PASS);
    }else{
        lr_error_message("退出登录失败,http请求状态码为:%d", loginout_rscode);
        lr_end_transaction("login_out", LR_FAIL);
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值