首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

RFS的web自动抽验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)

2012-09-06 
RFS的web自动化验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)引言:什么是RFS——RobotFr

RFS的web自动化验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)

引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面。

( @齐涛-道长 新浪微博)

 

话说最新RIDE升级比较频繁,前几天还看的是0.47,转眼就变成0.49了,所以我觉得有必要放两个列表,列出RIDE的各个版本影响比较重大的问题及解决办法以及各版本的优点,方便后来的童鞋寻找答案。

BUG列表:

RIDE版本问题表现解决办法0.46.1中文目录执行报错升级到0.470.47执行页面显示中文乱码修改encodingsniffer.py文件

版本优点:

RIDE版本优点备注0.47修复了0.46.1的中文目录执行报错问题0.48增加显示log内容的页面0.49还没仔细研究

 

之前有位朋友说RIDE0.46.1的版本无法执行中文目录,开始我以为是脚本问题,后来发现这确实是RIDE的bug,所幸发现RIDE正好升级了0.47,解决了这个问题。

不过由此引发了一个新的问题就是执行的时候显示的是乱码,经过苦苦研究,终于找到问题解决办法,详见下文。

 

 (当前RIDE最新版本0.49)

 

中文乱码解决方案(适用于0.47-0.49)——目前该方案基于Robotframework2.7.3,对于RF2.6的我下周找个机器试验一下再更新。

==修改[Python目录]\Lib\site-packages\robotide\lib\robot\utils中的encodingsniffer.py

if UNIXY:    DEFAULT_SYSTEM_ENCODING = 'UTF-8'    DEFAULT_OUTPUT_ENCODING = 'UTF-8'else:    DEFAULT_SYSTEM_ENCODING = 'cp1252'    DEFAULT_OUTPUT_ENCODING = 'cp437'

将DEFAULT_OUTPUT_ENCODING = 'cp437'修改为 DEFAULT_OUTPUT_ENCODING = 'cp936'

如果第一次使用RIDE,请同时修改D:\Python27\Lib\site-packages\robot\utils中的encodingsniffer.py

修改的地方一样,也是将DEFAULT_OUTPUT_ENCODING = 'cp437'修改为 DEFAULT_OUTPUT_ENCODING = 'cp936'
(如果看过前面文章的童鞋应该已经是修改过了)

 

====解决过程====

因为正好看到RIDE升级到0.47,其中修复的一个bug有点像前面一个朋友留言的错误,进去看了一下发现果然是中文的问题,于是把RIDE升级了,发现确实解决了问题,不过带来了新的问题。(图用的是0.49的,解决方式都一样)

RFS的web自动抽验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)

 

于是跑到RIDE的Google-code那里去提了个issue:http://code.google.com/p/robotframework-ride/issues/detail?id=1025

(英文很烂滴说,大家不要笑我哈)

 

后来一直忙于版本上线,没工夫细看,终于今天想彻底解决一下,就在site-packages里的robot和robotide两个目录里来回找,然后看0.47修改了哪里。

找是找到了,在robotide/contrib/testrunner/testrunnerplugin.py这个文件里,于是尝试直接在这边调用SYSTEM_ENCODING的地方直接修改,无意中试验出一次能正确显示中文了,结果我想试试其他版本是不是也一起解决了,就继续装了0.49。

然后悲催的发现又变成乱码了。

后来看到robotide\lib\robot\utils下面也有一个encodingsniffer.py文件,里面也有编码设置,就尝试在这里修改了一下。

神奇的事情出现了,真的正常了~~

RFS的web自动抽验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)

 

因为每次重装RIDE,肯定是把robotide目录的内容更新了,所以这也是导致安装新版本后又变成乱码的原因,于是反复的安装这几个版本,都用上面的方法解决了,很是兴奋~!

但是想到这样要2个地方都修改,很麻烦啊,我猜是不是他现在只是用robotide目录的那个文件做encoding了呢?

于是跑去把robot目录里的文件修改回cp437,结果变成以前的显示问号了。RFS的web自动抽验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)

RFS的web自动抽验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)

 

最终的结论就是,这2个地方的encoding都起作用,缺一不可。至少目前是必须2个地方都修改才能解决中文问题。

由此引发的猜想,也是我在issue里最后写的,这可能是一个bug,因为有可能RIDE用了错误的encoding,如果最终确定是个问题了,那么等修复以后估计还是只需要维护robot里的encoding就可以了。

 

热点排行