zoukankan      html  css  js  c++  java
  • Python HTMLTestRunner生成网页自动化测试报告时中文编码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6

    1. 由于使用Python Selenium做网页自动化测试时,有截取网页上的中文信息保存到测试结果中,最终出现编码错误如下:

    File "D:/PycharmProjects/AutoTest/TestZone/RunTest.py", line 25, in <module>
    runner.run(discover)
    File "D:PycharmProjectsAutoTestBaseHTMLTestRunner.py", line 631, in run
    self.generateReport(test, result)
    File "D:PycharmProjectsAutoTestBaseHTMLTestRunner.py", line 678, in generateReport
    report = self._generate_report(result)
    File "D:PycharmProjectsAutoTestBaseHTMLTestRunner.py", line 745, in _generate_report
    test_list = ''.join(rows),
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 84: ordinal not in range(128)

    2.   百度了多种方案,通过设置默认的编码格式可解决,通过如下代码:

    1 import sys
    2 reload(sys)
    3 sys.setdefaultencoding('utf-8')

    设置默认编码的时候可能提示sys模块不存在'setdefaultencoding'

    sys.setdefaultencoding('utf-8')
    Traceback (most recent call last):
    File "<input>", line 1, in <module>
    AttributeError: 'module' object has no attribute 'setdefaultencoding'

    这是因为python2.5以后的版本已经移除了'setdefaultencoding',通过reload(sys)即可重新加载出'setdefaultencoding'。

     3.  问题原因:

    Pyhton2.x版本中,默认情况下,Python采用的是ascii编码方式,如下所示:

     而Python在进行编码方式之间的转换时,会将 unicode 作为“中间编码”,但 unicode 最大长度为 128 ,

    当尝试将 ascii 编码字符串转换成"中间编码" unicode 时,如果字符串超出了其范围,就抛出了如上错误。

  • 相关阅读:
    [杭电_HDU] 2013
    动态调整线程数的python爬虫代码分享
    wampserver 配置的几个坑(雾
    wampserver apache 403无权限访问 You don't have permission to access /index.html on this server
    [爬坑日记] 安卓模拟器1903蓝屏 没开hyper-v
    [单片机] ESP8266 开机自动透传
    [操作系统] 死锁预防和死锁避免
    [linux] 手机Deploy linux 桌面中文乱码
    XHTML基础
    JDBC_c3p0连接池
  • 原文地址:https://www.cnblogs.com/bozhou/p/6755988.html
Copyright © 2011-2022 走看看