t.me/atinfo_chat Telegram группа по автоматизации тестирования

Проблема с кодировкой при заполнении формы


(axeDimko) #1

Добрый день, наткнулся на некторую проблему:

при заполнении формы необходимо в поля вводить данные кириллицей, после запуска теста из командной строки windows 7, получил ошибку UnicodeDecodeError: 'utf8' codec can't decode ...  сначала эта ошибка появлялась с локаторами, ее удавалось устранить с помощью css selector, но в форме необходимо вводить символы кириллицей, и ввод данных в поля таким образом: driver.find_element_by_id("credit_request_full_name").send_keys("Иван Иванович Тест") фэлит тест.

Как можно обойти данную ошибку?

Спасибо.


(Alexander Petrovich) #2

# -*- coding: utf-8 -*-  ---   в начале файла

driver.find_element_by_id("credit_request_full_name").send_keys(u"Иван Иванович Тест")

;) Не за что 


(Mykhailo Poliarush) #3

да проблема юникода очень часто встречаюется у начинающих русскоязычных автоматизаторов и программистов :)

вся проблема в том, что ascii нет места для многих букв, таких как русские, для этого надо использовать более рассширенный формат как utf-8

но решение вам уже подсказали


(axeDimko) #4

Сделал как говорили, в начале файла # -*- coding: utf-8 -*-

и перед крирлицей u,  вот что мне пишет в cmd: http://screencast.com/t/uOe7rCsNL , подскажите еще пожалуйста)

 


(Mykhailo Poliarush) #5

вот такой вот пример у меня работает нормально

 

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yahoo.com") # Load page
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p") # Find the query box
elem.send_keys(u"я что-то ищу на русском" + Keys.RETURN)
browser.close()
 
удостоверьтесь, что вы сохранили файл в ютф-8 формате, потому что он может храниться у вас в формате анси

(axeDimko) #6

Переделал,как подсказали вы-корректно работает, спасибо.

Но если делать через driver.find_element_by_id("credit_request_full_name").send_keys(u"Иван Иванович Тест"), выдает unicode decode error, странно.