Найти - Пользователи
Полная версия: Помогите пожалуйста с кириллической кодировкой (решения искал, не получается почему-то)
Начало » Центр помощи » Помогите пожалуйста с кириллической кодировкой (решения искал, не получается почему-то)
1
dmitraz
Добрый день!

Я начинаю осваивать тесты на питон+селениум.

Прошу помочь опытных программистов с проблемой в коде.

Есть задача протестировать различные варианты поведения пользователя в приложении, но проблема возникает сразу при тесте входа. Т.е. есть код, форма с одним полем “Имя” и кнопкой “Войти”. Этот код берет тестовые имена пользователей из обычного текстового файла. Имена в файле кириллические. Файл с именами и файл с кодом сохранены в utf-8.


Вот код скрипта:

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver import FirefoxProfile
from time import sleep
from random import randint
class Userr(object):
    def __init__(self, name):
        self.name = name
        firefoxProfile = FirefoxProfile()
        firefoxProfile.set_preference('plugin.state.flash', 0)
        firefoxProfile.set_preference('permissions.default.image', 2)
        firefoxProfile.update_preferences()
        self.driver = webdriver.Firefox(firefox_profile=firefoxProfile)
        self.driver.implicitly_wait(10)
        self.go()
    def go(self):
        driver = self.driver
        driver.get('http://testpy.a5.ru/form1.html')
        try:
            input = driver.find_element_by_id('nick')
            input.send_keys(self.name)
            submit = driver.find_element_by_xpath("//*[@type='submit']")
            submit.click()
            print('ok: %s' % self.name)
        except:
            print('bad: %s' % self.name)
            driver.quit()
if __name__ == '__main__':
    names = open('names.txt').read().splitlines()
    for name in names:
        Userr(name)

Файл с именами names.txt выглядит просто:

Олег
Артём
Марина

Проблема в том, что скрипт почему-то не хочет работать с кириллическими именами в файле. Т.е. он их почему не подставляет в поле, ну и до нажатия кнопки не доходит совсем. При использовании латинских имен всё работает корректно.

Python 2.7.2

Вот что выдаёт консоль:

tux@slitaz:~$ python main.py
Traceback (most recent call last):
  File "main.py", line 37, in <module>
    Userr(name)
  File "main.py", line 22, in __init__
    self.go()
  File "main.py", line 28, in go
    input.send_keys(self.name)
  File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 318, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
  File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 402, in _execute
    return self._parent.execute(command, params)
  File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 173, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 346, in execute
    data = utils.dump_json(params)
  File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/utils.py", line 30, in dump_json
    return json.dumps(json_struct)
  File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xef in position 0: unexpected end of data

Прошу помощи! Заранее спасибо!
py.user.next
dmitraz
names = open('names.txt').read().splitlines()
Файл нужно открывать с указанием кодировки. Используй io.open().
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB