用loadrunner如何取ajax Response中的内容,显示乱码啊?
ajax Response body返回值如下:<a href="javascript:void(0)" onclick=ShowRoomOtherInfo('6daefad473ae4f9c8067b62ddf7adec5')><u>鍗曚汉鎴?/u></a></td><td align=center valign=middle class=btgry> RMB 3278</td><td align=center valign=middle class=btgry>銕?/td><td align=center valign=middle class=btgry></td><td align=center valign=middle class=btgry></td><td align=center valign=middle class=btgry><a href="javascript:void(0)" onclick="AddToOrder('2125411','PLAZA(PLAZA ROOM) 骞垮満閰掑簵锛堝箍鍦烘埧锛?,'鍗曚汉鎴?,'','','','2011-7-1,3278','2011-07-01','2011-07-02')" >
红色标示部分为要取的值
写的脚本如下:
//匹配hotelid和hotelname
web_reg_save_param_ex(
"ParamName=RoomName",
"LB=<u>",
"RB=?/u>",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*hotel.xxx.com/Ajax/HotelInternational.ashx*",
LAST);
web_reg_save_param_ex(
"ParamName=RoomPrice",
"LB=\'\',\'\',\'",
"RB=\'",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*hotel.xxx.com/Ajax/HotelInternational.ashx*",
LAST);
//酒店房型返回值
web_custom_request("HotelInternational.ashx_2",
"URL=http://hotel.xxx.com/Ajax/HotelInternational.ashx",
"Method=POST",
"Resource=0",
"RecContentType=text/plain",
"Referer=http://hotel.xxx.com/HotelInternationalDetail.aspx?strCityId={CityCode}&strInfoCode={HotelCode}&checkin={StartDay}&checkout={EndDay}",
"Snapshot=t14.inf",
"Mode=HTML",
//"Body=type=pricelist&hotelcode={HotelCode}&hotelid={hotelIDName}&checkin={StartDay}&checkout={EndDay}&cityid={CityCode}",
"Body=type=pricelist&hotelcode={HotelCode}&hotelid={HotelId}&hotelname={HotelName}&checkin={StartDay}&checkout={EndDay}&cityid={CityCode}",
LAST);
运行脚本后提示错误没找到rooname?我应该如何处理ajax返回内容中的乱码数据??能否取值后转成正常的中文显示?请高手指教 对于ajax的返回内容由于无法被lr直接做utf-8的转换所以你需要自己用LR的转换函数对编码进行变化
函数貌似是lr_convert_string,记得不是很清楚了 楼上所说函数应该是lr_convert_string_encoding才是,具体参数可以看看帮助文档,希望对你有帮助。 回复 3# lix43420
回楼上,小弟愚钝,话说网上找到的始终都是将中文转为utf-8,没说咋把utf-8转成中文啊。。。 怎么把utf-8转成中文嘞,请高手们赐教,
容忍俺问这个小白问题吧。。实在是走投无路了。。请指教啊。。。 look this
http://www.51testing.com/index.php?uid-104-action-viewspace-itemid-200711 回复 6# 云层
谢谢云层提供的资料,终于转成中文了,哈哈
lr_convert_string_encoding(lr_eval_string("{RoomName}"),"utf-8",NULL,"my");
这里使用函数lr_convert_string_encoding函数,将RoomName参数中的utf-8编码转换为当前系统的编码 本帖最后由 luxiuxiu1987 于 2011-6-21 09:45 编辑
话说,匹配roomname的时候,
web_reg_save_param_ex(
"ParamName=RoomName",
"LB=<u>",
"RB=?/u>",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*hotel.xxx.com/Ajax/HotelInternational.ashx*",
LAST);
显示无法找到,只能把问号去掉进行匹配,
web_reg_save_param_ex(
"ParamName=RoomName",
"LB=<u>",
"RB=/u>",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*hotel.xxx.com/Ajax/HotelInternational.ashx*",
LAST);
才能得到的结果是:鍗曚汉鎴?,进行转码后变成:单人房<;
多出个单边的尖括号,咋处理呢?为啥不能一开始的时候就把尖括号去掉呢? 你关联的时候多做点,或者回头用lr_save_var自己去过滤掉最右边的几个字符 再次感谢云层大人的回答,
本人查找相关资料如下
lr_save_var
C Language
int lr_save_var (const char * param_value, unsigned long const value_len, unsigned long const options, const char * param_name);
param_value:参数值
value_len:值的字节长度
options:参数选项,一般为0。
param_name:参数名称。
lr_save_var函数把指定的变长字符串赋值给参数。这个函数在关联查询的时候非常有用。需要使用lr_eval_string来确定参数的值。
例子:
在下面的例子中, lr_save_var 用来限制参数的长度。
Action()
{
#define MAX_NAME_LEN 4
// 创建参数, InName
lr_save_string("Fitzwilliam", "InName");
// 把 "InName"的前四个字节保存到 "ShortName"
lr_save_var( lr_eval_string("{InName}"),
MAX_NAME_LEN, 0, "ShortName");
return 0;
}
Output:
Action.c(8): Notify: Saving Parameter "InName = Fitzwilliam"
Action.c(10): Notify: Saving Parameter "ShortName = Fitz"
前面关联的左右边界都是静态的。
但因为我需要取值得roomname,左边界是动态的,并且系统返回的RoomName是不定长度的,仅仅通过一个关联函数是无法处理的,这个时候还需要使用一个函数strtok()来进行字符内容切割(类似于正则表达式)。 帮助有东西没有告诉你
lr_save_var可以这样写lr_save_var(x+2,...,....)你可以指定第几位开始取多少位的 使用方法如下:
char *token;
char temp;
lr_convert_string_encoding(lr_eval_string("{RoomName}"),"utf-8",NULL,"myroom");//将utf-8转成系统当前的编码
strcpy(temp,lr_eval_string("{myroom}"));//取出参数值,并且赋值给变量temp
token=(char *)strtok(temp,"<");//使用<符号作为分隔符
lr_error_message(token);
能取出正常房间名称 学习了,都是高手,受菜鸟一拜。 谢谢分享,写得有始有终 赞一下 luxiuxiu1987 发表于 2011-6-21 09:39
回复 6# 云层
谢谢云层提供的资料,终于转成中文了,哈哈
lr_convert_string_encoding(lr_eval_string(" ...
在吗?请问这段代码要放置在哪里啊?
页:
[1]