RobotFramework一些常见问题

解决数据库返回中文乱码问题

在使用RF查找数据库返回值时,有时获取的是中文,但在RF中识别出来是乱码



数据库默认编码不是Utf-8,需要人工转换一下。DataBaseLibrary自身没有提供转换函数,为了解决这个问题,我们需要对DataBaseLibrary进行扩展。


1. 进入到安装DataBaseLibrary的存放路径,找到query.py

路径每人不一样,我是安装的postgreSQL的API驱动,存放路径是F:\Python27\Lib\site-packages\robotframework_databaselibrary-0.8.1-py2.7.egg\DatabaseLibrary

但有的人路径就直接在site-packages/DatabaseLibrary下面;


2.打开query.py,在文件末尾加入如下decode解码方法

    def decode(self,customstr,mode):
        return customstr.decode(mode)


3.在RF中调用decode,对返回结果进行解码



4.再次运行就不是乱码了



1.数据库连接语句中加上charset='utf8'


2.新建一个Library,放到python的Lib/site-packages目录下

RobotFramework一些常见问题_第1张图片

3.ride中引入Library后,编写内容如下

RobotFramework一些常见问题_第2张图片


解决robot Framework直接查询数据库字符串显示的是???,因为ODBC对mysql转码支持较好,这里用odbc连接mysql

方法一:ODBC方法

1.先安装pyodbc,通过pip install pyodbc
2.pyodbc连接mysql,需要windows工具mysql connector,下载对应版本的.msi文件后,直接安装
3.安装完成后,需要配置ODBC数据源
(1)安装完成mysql-connector-odbc-5.1.8-winx64.msi文件后
(2)打开控制面板 > 管理工具 > ODBC数据源(64/32)根据对应选择
(3)点击添加,打开创建数据源选择弹框,选择Mysql ODBC 5.1 driver,点击“完成”
(4)弹出mysql代理地址填写框,填写对应ip、user,pass后,点击“OK”即添加成功
连接语句:
Connect To Database Using Custom Params    pyodbc    "Driver={MySQL ODBC 5.1 Driver};Server=xx.xx.xx.xx;Port=3306;Database=crm;User=root;"

4.复制以上链接语句到robot脚本中,添加sql语句运行脚本后,查询结果显示ASCII码



5.此时,进入DataBaseLibrary的存放路径,找到query.py文件
示例路径:C:\Python27\Lib\site-packages/DatabaseLibrary\query.py
6.用编辑器打开query.py文件,在文件尾部添加转码代码:
  def decode(self,code):
        return code.decode('utf-8')



保存代码后,重新打开robot运行脚本发现查询结果已经变成了中文
【此处注意:sql查询结果需为字符串类型,如结果为整行sql则转码依然会报错。
例如:int类型不支持转码】


如以上代码添加后,依然不显示中文,可修改以上code为:
def decode(self,code):
        test=code.encode('utf-8')
        return test.decode('utf-8')
保存后,重新打开运行robot脚本,如依然不能解决乱码问题,可参考另外一种解决方法:

链接地址:

http://blog.csdn.net/huashao0602/article/details/55045719


方法二:Mysql方法

直接在连接数据库时,在结尾处指定编码方式,例如:

在pymysql 连接尾部加上charset="UTF8"即可完美解决

在robotframework中执行自动化用例时,日志中出现中文乱码如“\xE5\x8C\x97\xE4\xBA\xAC”,

RobotFramework一些常见问题_第3张图片

这里有两种解决办法:
1)一劳永逸的解决办法:
在python安装目录下,在Lib/site-packages/robot/utils目录下的unic.py文件中,在下面两个位置,把“ASCII”改为“utf-8”

RobotFramework一些常见问题_第4张图片

然后再次执行,就OK了。

这里写图片描述

2)另一种方法就是写自己的关键字,把对应中文转换为“utf-8”即可。
python代码:
def logConvertStr(self,content,charset=‘utf-8’):
“”“常用于日志中文乱码如‘\xe4\xba\xa7’
转换为指定字符编码,常用字符集编码有utf-8,utf-8,gbk,gb2312等”""
content = str(content).decode(charset)
print content

浏览器驱动对应版本链接
http://chromedriver.storage.googleapis.com/index.html

你可能感兴趣的:(RobotFramework)