Форум сайта python.su
Добрый день!
Я начинаю осваивать тесты на питон+селениум.
Прошу помочь опытных программистов с проблемой в коде.
Есть задача протестировать различные варианты поведения пользователя в приложении, но проблема возникает сразу при тесте входа. Т.е. есть код, форма с одним полем “Имя” и кнопкой “Войти”. Этот код берет тестовые имена пользователей из обычного текстового файла. Имена в файле кириллические. Файл с именами и файл с кодом сохранены в 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)
Олег Артём Марина
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
Отредактировано dmitraz (Март 15, 2015 16:26:17)
Офлайн
dmitrazФайл нужно открывать с указанием кодировки. Используй io.open().names = open('names.txt').read().splitlines()
Офлайн