【loadrunner】:SAP-GUI脚本压测中,字符截取的问题汇总

1,SAP-GUI的脚本和普通脚本有很大区别,在录制成功之后,脚本每一步的操作,都是格式化的,例如:

	sapgui_set_text("合同编号", 
		"20010494", 
		ctxtRMF672, 
		BEGIN_OPTIONAL, 
			"AdditionalInfo=sapgui5018", 
		END_OPTIONAL);

  这是一个在“合同编号” 中输入参数的一部操作,在这一操作中,通过LR自带的SAPgui的函数集中的set_text函数来控制输入

合同编号:是这个text框的标题;

20010494:是输入款的内容;

ctxtRMF672:是这个输入框的属性id,在脚本的globals.h的头文件中:

【loadrunner】:SAP-GUI脚本压测中,字符截取的问题汇总

SAPgui的函数集大概如下,覆盖所有gui页面的操作:

【loadrunner】:SAP-GUI脚本压测中,字符截取的问题汇总

 

 

 这支业务做成功之后,会返回一个提示页面信息:

	sapgui_status_bar_get_text("paramStatusBarText", 
		BEGIN_OPTIONAL, 
			"Recorded status bar text: 合同 20012770已在公司代码 1000 中创建", 
			"AdditionalInfo=sapgui5056", 
		END_OPTIONAL);

表名合同已经创建成功了,但是 string paramStatusBarText = “合同 20012770已在公司代码 1000 中创建”

SAPgui的函数集范围内没有截取合同号20012770的函数,但是Lr是兼容C语言的,所以用c的字符串处理函数库,可以处理这个

    char str1[100];
    char str2[100];
    char * str3;
    strcpy(str1,lr_eval_string("{paramStatusBarText}")); //将guiBarText的text值赋值给str1
    lr_output_message("========str1返回信息为:%s,",str1);
    strncpy(str2,str1,13);                                // 截取str1的前13位赋值给str2,前13位=“合同 20012770”
    lr_output_message("========str2返回信息为:%s,",str4);    
    str3=(char *)strchr(str2,'2');                            //截取str2的从2开始至最后的字符,也就是20012770并转化成char类型赋值给str3
    lr_output_message("========str3返回信息为:%s,",str3);
    lr_convert_string_encoding( str3,LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"newstr3" );//这一步是转化成LR可以直接参数化使用的{newstr3}格式

返回内容:

Action.c(178): ========str1返回信息为:合同 20012970已在公司代码 1000 中创建,
Action.c(181): ========str2返回信息为:合同 20012970,
Action.c(183): ========str3返回信息为:20012970,  

以上。

在引入c的库函数过程中,变异一开始提示未定义错误:illegal statement termination

【loadrunner】:SAP-GUI脚本压测中,字符截取的问题汇总

 

 

 具体原因是,在action里面,定义char之类的操作,应该放在最上面,把     lr_start_transaction("fnv1合同创建");移到char定义后面就行了。

上一篇:基本数据类型


下一篇:c++语言入门教程--16c++ 中的 String 类