#coding=utf-8 from selenium import webdriver import unittest,time import sys #在27 28行中调试 获取网页title # reload(sys) # sys.setdefaultencoding('utf-8') class MyTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = "http://www.youdao.com" def test_youdao(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_name("q").clear() driver.find_element_by_name("q").send_keys("webdriver") driver.find_element_by_id("border").click() time.sleep(2) title = driver.title # print (title.decode('utf-8')).encode('gb2312') # print title self.assertEqual(title,u"有道首页") def tearDown(self): self.driver.close() if __name__ == '__main__': unittest.main()
如果 29行的title不对 会报错
结果报了如下的错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
然后在代码前使用了:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
这个编码设置,运行依然报如上错误。
从输出看,解码是没问题的,反而是编码出了问题,应该是当前环境下print时候编码出的问题
于是,将代码改为:
print (title.decode('utf-8')).encode('gb2312')
结果没问题了。
所以在使用 print 的时候,要注意环境所需的编码。