一般来说我们所使用的中文网站都是基于UTF-8的,只需要在录制或者是回放时设置对应的编码就行了,但是随着技术的升级,慢慢的我们发现有些内容的UTF-8无法处理了。
例如在新版的discuz!.net 3.0中,采用了新的AJAX处理方法,将登陆成功的信息通过UTF-8 的XML返回,这样就出现了一个问题,无法针对这个返回进行检查点函数了(LR不会对返回的XML进行UTF-8解析),这里给出两个解决方案:
1.检查点函数直接用UTF-8编码后的乱码来做
web_reg_find("Search=Body",
"SaveCount=loginst",
"Text=登录æˆåŠŸ",
LAST);
web_submit_data("login.aspx_2",
"Action=http://172.168.2.200:8081/login.aspx?infloat=1&&inajax=1",
"Method=POST",
"TargetFrame=",
"RecContentType=text/xml",
"Referer=http://172.168.2.200:8081/",
"Snapshot=t3.inf",
"Mode=HTML",
ITEMDATA,
"Name=username", "Value=admin", ENDITEM,
"Name=password", "Value=51testing", ENDITEM,
"Name=question", "Value=0", ENDITEM,
"Name=answer", "Value=", ENDITEM,
"Name=templateid", "Value=0", ENDITEM,
LAST);
2.通过关联获得这块文字,再通过函数转换内码
web_reg_save_param("login",
"LB=<p>",
"RB=</p>",
"Ord=1",
"Search=Body",
LAST);
web_submit_data("login.aspx_2",
"Action=http://172.168.2.200:8081/login.aspx?infloat=1&&inajax=1",
"Method=POST",
"TargetFrame=",
"RecContentType=text/xml",
"Referer=http://172.168.2.200:8081/",
"Snapshot=t3.inf",
"Mode=HTML",
ITEMDATA,
"Name=username", "Value=admin", ENDITEM,
"Name=password", "Value=51testing", ENDITEM,
"Name=question", "Value=0", ENDITEM,
"Name=answer", "Value=", ENDITEM,
"Name=templateid", "Value=0", ENDITEM,
LAST);
lr_convert_string_encoding(lr_eval_string("{login}"),"utf-8",NULL,"my");
这里使用函数lr_convert_string_encoding函数,将login参数中的utf-8编码转换为当前系统的编码,最后在my参数中会出现登陆成功的内容,这样就可以在通过字符串比较来确认事务是否成功了。
另:奇怪的是用lr_convert_string_encoding将"登陆成功"转换为utf-8再去做检查点判断时,会检查不到该内容,可能是内码转换后格式还是有些不同导致的,所以没有采用先转内码再对转化后的内码做检查点的方式。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |