У меня возникла проблема при утверждении двух значений non-ascii. Один приходит из файла CSV, а другой, полученный из элемента в HTML:Selenium Python 2.7 - утверждение символов, отличных от ascii
<h1 class="LoginElement">登录</h1>
Я использую селен, чтобы получить текст
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)
возвращает следующее:
登入
<type 'str'>
登录
<type 'unicode'>
Это, как я инициализирует файл CSV из моего класса "Utility":
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 вы используете? Как выглядят 'txt' и' w_msg', если вы печатаете их перед утверждением? Какие типы являются 'txt' и' w_msg' (например, 'print type (txt)' и 'print type (w_msg)')? – rkersh
Поместите '# - * - кодирование: utf-8 - * -' в первую строку вашего .py-файла. – dm295
@rkesh Python 2.7 Если я печатаю '' x_msg' и txt' они оба печать OK ошибок нет там: 'TXT = 登录 w_msg = 登录 <тип 'юникода'>' и если я пытаюсь '> ул (w_msg) ' Я получаю: ' E UnicodeEncodeError: кодек ascii не может кодировать символы в позиции 0-1: порядковый номер не в диапазоне (128) ' –