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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tulituqi/article/details/7931069

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

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

我搞了个RobotFramework自动化测试公众号

欢迎大家扫一下加入。

这里有最新的安装指南,本文里的版本都比较旧了。


==2013年9月3日补充更新==

目前RIDE最新的版本为1.1.0,请注意更新。以前列的一些问题基本都已经解决了。中文乱码在新的RIDE中已经解决,在jenkins中执行记录如果也是乱码的请按照下面的中文乱码解决方案修改slave上的robotframework。在写这个更新时的最新的robotframework版本是2.8.1(2.8有问题马上更新了2.8.1),当然修改方案也是同下文的RF2.7的。


==以下为旧版内容==

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

他们悄无声息的在9月11日又升级到0.50了,把我提的bug修复了。还要继续试用一下。

 官网下载地址:https://github.com/robotframework/RIDE/downloads

 

BUG列表:

RIDE版本 问题表现 解决办法
0.46.1 中文目录执行报错 升级到0.47
0.47 执行页面显示中文乱码 修改encodingsniffer.py文件
0.50 在Python2.7.1上执行报错'module' object has no attribute 'STARTF_USESHOWWINDOW' 升级到Python2.7.3

版本优点:

RIDE版本 优点 备注
0.47 修复了0.46.1的中文目录执行报错问题
0.48 增加显示log内容的页面
0.49 还没仔细研究
0.50 不需要再修改编码就可以正常显示中文了

 

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

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

 

 (当前RIDE最新版本0.49)

 

中文乱码解决方案(适用于0.47-0.49)——目前该方案适用于RF2.6和Robotframework2.7,因为主要修改的文件都是在robotide目录下。

==修改[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的,解决方式都一样)

于是跑到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文件,里面也有编码设置,就尝试在这里修改了一下。

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

 

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

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

于是跑去把robot目录里的文件修改回cp437,结果变成以前的显示问号了。哭

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

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

猜你喜欢

转载自blog.csdn.net/tulituqi/article/details/7931069
今日推荐