Selenium Python 2.7 - 断言非 ascii 字符
Selenium Python 2.7 - asserting non-ascii characters
我在断言两个非 ascii 值时遇到问题。一个来自 csv 文件,另一个来自 html:
中的元素
<h1 class="LoginElement">登录</h1>
我正在使用 selenium 获取文本
w_msg = driver.find_element(By.CSS_SELECTOR, "h1.LoginElement").text
当我声明两个值时
assert txt in w_msg
我收到以下错误消息:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
如果我同时打印变量及其类型:
print txt
print type(txt)
print w_msg
print type(w_msg)
它returns以下内容:
登入
<type 'str'>
登录
<type 'unicode'>
这就是我从 "Utility" class:
初始化 CSV 文件的方式
def open_csv(base_csv, file_name):
csv_file = open(base_csv + file_name, 'rb')
reader = csv.reader(csv_file, delimiter=',')
row = list(reader)
return row
下面是测试调用:
csv = Utility.open_csv(base_csv, file_name)
注意:我正在使用 OpenOffice Calc 构建 csv 并将其保存为 UTF-8
我已经尝试了很多在 SO 中找到的解决方案,但仍然无法正常工作。任何帮助或引导正确的方向将不胜感激。
Python 正在尝试将您的 str
转换为 Unicode 以进行比较。不幸的是,Python 2.x 旨在谨慎行事,只使用 ASCII 解码字符串。
您需要使用 CSV 文件的适当编码将 txt
解码为 Unicode,因此 Python 不必这样做。
您可以使用 txt.decode()
执行此操作,但最好的方法是让 Python 在您阅读文件时为您解码。
很遗憾,Python 2.x CSV 模块不支持 Unicode,因此您需要使用 drop in replacement:https://github.com/jdunck/python-unicodecsv
像这样使用它:
import unicodecsv
with open("myfile.csv") as my_csv:
r = unicodecsv.reader(my_csv, encoding=YOURENCODING)
YOURENCODING
可能是 utf-8
、cp1252
或此处列出的任何编解码器:https://docs.python.org/2/library/codecs.html#standard-encodings
如果 CSV 来自 Excel 那么它很可能是一个以 cp
开头的编解码器
我在断言两个非 ascii 值时遇到问题。一个来自 csv 文件,另一个来自 html:
中的元素<h1 class="LoginElement">登录</h1>
我正在使用 selenium 获取文本
w_msg = driver.find_element(By.CSS_SELECTOR, "h1.LoginElement").text
当我声明两个值时
assert txt in w_msg
我收到以下错误消息:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
如果我同时打印变量及其类型:
print txt
print type(txt)
print w_msg
print type(w_msg)
它returns以下内容:
登入
<type 'str'>
登录
<type 'unicode'>
这就是我从 "Utility" class:
初始化 CSV 文件的方式def open_csv(base_csv, file_name):
csv_file = open(base_csv + file_name, 'rb')
reader = csv.reader(csv_file, delimiter=',')
row = list(reader)
return row
下面是测试调用:
csv = Utility.open_csv(base_csv, file_name)
注意:我正在使用 OpenOffice Calc 构建 csv 并将其保存为 UTF-8
我已经尝试了很多在 SO 中找到的解决方案,但仍然无法正常工作。任何帮助或引导正确的方向将不胜感激。
Python 正在尝试将您的 str
转换为 Unicode 以进行比较。不幸的是,Python 2.x 旨在谨慎行事,只使用 ASCII 解码字符串。
您需要使用 CSV 文件的适当编码将 txt
解码为 Unicode,因此 Python 不必这样做。
您可以使用 txt.decode()
执行此操作,但最好的方法是让 Python 在您阅读文件时为您解码。
很遗憾,Python 2.x CSV 模块不支持 Unicode,因此您需要使用 drop in replacement:https://github.com/jdunck/python-unicodecsv
像这样使用它:
import unicodecsv
with open("myfile.csv") as my_csv:
r = unicodecsv.reader(my_csv, encoding=YOURENCODING)
YOURENCODING
可能是 utf-8
、cp1252
或此处列出的任何编解码器:https://docs.python.org/2/library/codecs.html#standard-encodings
如果 CSV 来自 Excel 那么它很可能是一个以 cp