51Testing软件测试论坛

标题: 【已解决】一个关于web_reg_find函数检查中文乱码的问题(大家来研究下哈) [打印本页]

作者: ares444    时间: 2013-10-22 15:54
标题: 【已解决】一个关于web_reg_find函数检查中文乱码的问题(大家来研究下哈)
本帖最后由 ares444 于 2013-10-22 16:24 编辑

背景:刚才在写新员工培训PPT的时候,我录制了个打开百度首页的脚本。其中,使用了web_reg_find函数来校验返回的响应中是否包含“百度”两个字
这里牵扯到一个字符集的问题。导致若是直接检测“百度”两个字会造成乱码,无法匹配

问题分析:
首先我登陆百度,查看了下百度首页的源文件,发现百度的字符集为: UTF-8
于是我在脚本里就使用lr_convert_string_encoding函数来转换字符集。
脚本如下:
Action()
{

lr_convert_string_encoding("百度",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");
        web_reg_find("Search=body",
                 "Text={str}",
                 LAST);
    web_url("www.baidu.com",
        "URL=http://www.baidu.com/",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTML",
        EXTRARES,
        "Url=/img/i2.png", ENDITEM,
        "Url=/img/arr.gif", ENDITEM,
        "Url=/js/bdsug.js?v=1.0.3.0", ENDITEM,
        "Url=/cache/hps/js/hps-1.0.js", ENDITEM,
        LAST);

    return 0;
}



但是,执行的结果报错:Action.c(10): Error -26366: "Text=鐧惧害" not found for web_reg_find  
[MsgId: MERR-26366]

从报错信息里可以看出:百度两个字成功转成了UTF-8编码,为“鐧惧害


于是,我修改了脚本,将检查点那段直接改成如下:
web_reg_find("Search=body",
                 "Text=鐧惧害",
                 LAST);
然后再次运行脚本,居然检查通过了。。




问题:
现在问题就来了。为什么我用变量就检查不通过,而直接把值写进来就检查通过了呢?我变量明明解析成功了啊。。。求高人指点
作者: ares444    时间: 2013-10-22 16:05
刚才咨询了位朋友。原来
lr_convert_string_encoding("百度",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");
这个保存的str字段为:"str" =  "鐧惧害\x00"
后面有个\x00
下面的问题就变成了。如何去掉\x00
作者: ares444    时间: 2013-10-22 16:20
好了问题解决了,为了去掉\x00,可以用这个方法:
lr_save_string(lr_eval_string("{str}"),"str");

下面是修改后的脚本:
Action()
{
//将“百度”两个字,转换成UTF-8格式
lr_convert_string_encoding("百度",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");
//由于lr_convert_string_encoding的输出结果后面会多一个\X00,因此需要使用lr_save_string去掉\X00
lr_save_string(lr_eval_string("{str}"),"str");
        web_reg_find("Search=body",
                 "Text={str}",
                 LAST);


    web_url("www.baidu.com",
        "URL=http://www.baidu.com/",
        "Resource=0",
        "RecContentType=text/html",
        "Referer=",
        "Snapshot=t1.inf",
        "Mode=HTML",
        EXTRARES,
        "Url=/img/i2.png", ENDITEM,
        "Url=/img/arr.gif", ENDITEM,
        "Url=/js/bdsug.js?v=1.0.3.0", ENDITEM,
        "Url=/cache/hps/js/hps-1.0.js", ENDITEM,
        LAST);

    return 0;
}
作者: laicaiyan    时间: 2013-10-23 09:40
谢谢分享
作者: tianlang001    时间: 2013-10-23 17:52
受教了,谢谢分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2