51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7523|回复: 6
打印 上一主题 下一主题

[原创] 急——求web_custom_request函数乱码解决!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-9-16 14:25:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于乱码问题搜了有3天了,坛里或别的地方找到的方法全部都试过了,还是不行。
测试服务器端编码为gb2312,我没勾选录制设置里的UTF8支持录的和勾了以后录的脚本都一样乱码。 录制用的浏览器为IE6,查看那儿的编码设置为简体中文(GB2312),IE设置高级里没有勾选(总是以UTF-8发送URL)选项。

我用了各种设置搭配录了很多遍,每次的脚本都一样。仔细观察脚本发现登录页面的数据请求用的是web_submit_data函数,value值后面是中文,正常,没乱码(估计因为登陆页面简单,LR自动生成web_submit_data请求),但是后面的页面提交数据项复杂很多,LR自动生成的是web_custom_request函数,这时候就全是乱码了,截一小段请求body大家帮忙看看:

"BodyBinary=
<RootInfo>
<RowSet Name='SCustInfo4Na' FullName='com_asiainfo_openboss_obd_MPublicDef_SCustInfo4Na'  Sts='U'>
<Row Sts='N'>
<Col Name='M_STRCUSTNAME' Sts= 'N'  ID ='陈&aring;\xAE\xB6é&sup1;\\x8F' ></Col>
<Col Name='M_NCUSTTYPE' Sts= 'N'  ID ='1' >[1]&aelig;™\xAE\xE9\\x80š&aring;\xAE\xA2&aelig;ˆ\\xB7</Col>
<Col Name='M_NREGTYPE' Sts= 'N'  ID ='1' >[1]&Eacute;í·&Yacute;&Ouml;¤\\x81</Col>
............//有很多个col name定义
<Col Name='M_NCREDITCLASS' Sts= 'N'  ID ='1' >[1]&aelig;™\xAE\xE9\\x80š&ccedil;&ordm;§&aring;ˆ\\xAB--&aring;Ž&auml;&raquo;˜è&acute;&sup1;&ccedil;”¨&aelig;ˆ\\xB7</Col>
<Row>
</RowSet>
</RootInfo>",
  LAST);

除了这个request,还有n个请求页面,n个地方需要做参数和关联,乱码不解决根本没法儿做啊。。。搜到有网友说用lr_convert_string_encoding 这个函数,但是前提是你得知道哪个位置换哪批参数啊,我现在是完全没法子把参数文件和该替换的位置对应起来,,哪位大神来帮帮我啊。。。。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-9-16 14:38:07 | 只看该作者
web_custom_request函数说明:
Body(目前仅适用与web_custom_request函数):请求体。不同的应用中,请求体分别通过Body、BodyBinary或者BodyUnicode参数来传递。请求体可以只使用其中一个参数,也可以使用一连串的分开的参数组成多请求体。例如:
web_custom_request(
……
"BodyUnicode=REPRICE"
"BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00"
"Body=.\r\n"
"-dxjjtbw/(.tp?eg:ch/6--\r\n",
LAST);

在上面的代码中,使用了3个参数来划分请求体,一个是Unicode段,一个是二进制段,最后一个是常规的字符串。最终的请求体是这3个参数按照在函数中的顺序连接起来的值。
所有的请求体都是ASCII字符,以null结束。

Body:表示规则的,可打印的字符串。无法表示空字节。所有的字符都以一个反斜杠表示。注意:在旧的脚本中,可以看见不可打印的字符在请求体中以16进制方式进行编码。(例如 “\\x5c”),在这种情况下,必须使用“Binary=1”来标识。空字节使用"\\00"来表示。 相反,新脚本则会把把请求体分开放在不同的参数中("Body=...", "BodyBinary=...", Body=...")。

BodyBinary :表示二进制代码。不可打印的字符在请求体中以16进制方式\\xHH进行编码。在这里HH 表示十六进制值。空字节使用"\\00"来表示。

BodyUnicode:美国英语, 特指拉丁 UTF-16LE(little-endian)编码。这种编码方式会在在每个字符末尾附加一个0字节,以便使字符更可读。但是在VuGen中实际的参数把所有的0字节都去掉的。但是在发送给Web 服务器之前, web_custom_request函数会重新添加0字节的。对于不可打印的字符,使用单反斜杠表示,无法表示空字节。

我发现我录制的脚本中,只有BodyBinary这一种请求体啊,如果是Body的话是不是就不会是乱码呢?是这个原因么?如果是,可是我怎么知道LR为什么用哪一种呢?怎么改呢?大侠们帮帮忙啊
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-9-16 15:18:38 | 只看该作者
是不是必须用中文呢?录制脚本的时候看能不能把用中文的地方全部用英文。这样就不用为乱码而发愁了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-9-19 22:16:23 | 只看该作者
录制时输入的一些信息我改成英文,能定位到,但是页面很多输入数据项是下拉列表,全是返回选项,全是中文,没法儿定位啊。。。呜呜呜
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-9-20 16:57:14 | 只看该作者
可以尝试用其他工具,例如HttpWatch跟踪一下HTTP请求,把请求内容替换掉LR录制的脚本中乱码的部分
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    6#
    发表于 2010-9-20 21:13:00 | 只看该作者
    LR 11 好像有这样的新功能,可以解决乱码问题
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-1-29 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2018-3-15 09:22:13 | 只看该作者
    你好,请问你这个问题怎么解决的?我也遇到同样的问题,求大神指教啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-6-7 21:54 , Processed in 0.072366 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表