loadrunner Lr_类函数之 lr_save_searched_string()

lr_save_searched_string()

搜索缓冲区中出现的字符串,并将该字符串后的缓冲区的一部分保存到参数。
int lr_save_searched_string(const char * buffer,long buf_size,unsigned int occurrence,const char *search_string,int offset,unsigned int string_len,const char *parm_name);

参数说明:
buffer:STRING或CARRAY缓冲区,其中的部分内容要保存。
buf_size:缓冲区大小。
occurrence:search_string的出现次数(从0开始计数)。例如,如果search_string发生三次,而您想要第二次发生,则将occurrence设置为1。
search_string:要在缓冲区中搜索的字符串。
offset:在搜索字符串发生结束后要跳过的字符数。
string_len:要保存的字符数。
parm_name:在后续lr语句中用于引用所保存信息的参数名。名称用双引号括起来。



lr_save_searched_string函数在字符串或字符数组缓冲区中搜索字符串search_string,并找到search_string的第n次出现,其中n是出现次数加1.要保存的子字符串在search_string的第n次出现结束后的偏移量开始,有长度string_len
例如:
char cBuff [] =“abc Emma Woodhouse abc Elizabeth Bennet abc William Price”;
lr_save_searched_string(cBuff,strlen(cBuff),
        2,“a​​bc”,//搜索第三次出现的“abc”
        1,//跳过“abc”后的空格
        4,//放下四个字符...
        “Fannys_brother”); // ...在参数Fannys_brother中。
调用后,参数Fannys_brother的内容为“Will”。
search_string不能包含空字符,但缓冲区可以包含空字符。
使用lr_save_string函数从字符数组保存字符串。仅当需要相对于字符串出现保存字符数组的一部分时,才使用lr_save_searched_string。

 

示例:lr_save_searched_string
在以下示例中,证书保存到参数以供将来使用。 lr_save_searched_string函数将lrt_tpcal返回的“olen”缓冲区的16个字节保存到参数cert1。在缓冲区中保存的字符串位置超过字符串“SCertRep”的第一次出现的9个字节。

在“ScertRep”字符串之前通常有标题信息,它们的长度可以变化,这取决于记录环境。在这种情况下,lr_save_searched_string函数很有用,因为无论标头长度如何,证书总是超过此字符串九个字节。
/ *
请求CARRAY缓冲区1 * /
lrt_memcpy
data_0sbuf_141;
lrt_display_buffer
(“sbuf_1”,data_04141;
data_1 = lrt_tpalloc
(“CARRAY”,“”,8192;
tpresult_int = lrt_tpcall
(“GetCertificate”,
    data_0

    
参照图41
    
data_1
    
olen
    TPSIGRSTRT
;
/ *
回复CARRAY缓冲区1 * /
lrt_display_buffer
(“rbuf_1”,data_1olen51;
lrt_abort_on_error
();
lr_save_searched_string
data_1olen0,“SCertRep”,916,“cert1”);

### LoadRunner 11 中参数化函数的使用 在LoadRunner 11中,参数化是一个重要的概念,用于提高测试脚本的灵活性和可重用性。通过参数化,可以将某些固定值替换为动态变化的数据源中的数据[^1]。 #### 参数化的实现方式 为了实现参数化,在编写测试脚本时,可以通过特定的API来保存变量并将其转换成参数形式。例如: ```c // 将某个字符串或整型变量保存为参数 lr_save_string("example_value", "parameter_name"); ``` 这段代码展示了如何利用`lr_save_string()`函数把一个具体的数值或者字符串存入指定名称的参数里。 #### 函数应用注意事项 值得注意的是,为了让这操作生效,必须确保Runtime Settings配置正确无误;另外,由于这不是一种注册性质的功能,所以应当放置于接收到服务器响应之后的位置执行。对于文本匹配的任务来说,尽管存在专门针对图像校验的方法(`web_image_check`),但由于工具本身的局限性——仅能处理纯文本内容——故而建议优先考虑采用更为通用且高效的选项如`web_reg_find`来进行验证工作[^2]。 #### 实际案例演示 当涉及到复杂的Web服务交互场景下,比如SOAP协议的服务调用,除了基本的HTTP请求外,还可以借助第三方工具(SoapUI)辅助构建初始的消息体结构,再导入到LoadRunner环境中进一步加工优化。此时如果想要提取XML格式回复里的具体字段信息,则需要用到像`lr_xml_get_values`这样的专用解析接口[^3]。 #### 关键函数实例 下面给出了一段实际使用的例子,展示怎样捕获网页上的部分内容作为新的输入项参与后续流程逻辑运算之中: ```c char *tt_url; int len = strlen(tt_url); lr_save_searched_string(tt_url, len, 0, "serviceID", 1, j - i - 1, "serviceID"); ``` 这里定义了一个字符指针指向待处理的目标URL地址,并计算其长度以便传递给下一个环节;紧接着调用了`lr_save_searched_string()`方法从已有的页面HTML源码片段中截取出感兴趣的子串部分赋值给了名为`serviceID`的新创建出来的参数对象[^5]。 #### 脚本组织架构说明 最后提到的一点是有关整个性能测试项目的整体布局安排方面的问题。通常情况下,“Action”代表的就是承载着核心业务模拟动作序列的地方,即所谓的事务集合单元。默认状态下只会被执行一遍而已,不过可以根据实际情况调整重复次数以满足不同的负载模式需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值