Ok, seems it's my console setting. Tried console with koi8-r (from http://vak.ru/doku.php/macosx-russian), and it looks ok there. Mean the satndard output, but still getting "D" chars instead of russian when trying to convert it to html via HTMLTestRunner (see http://tungwaiyip.info/software/HTMLTestRunner.html)
On Thu, Jul 17, 2008 at 9:33 AM, Oleg Oltar <[EMAIL PROTECTED]> wrote: > > And in case: > # coding: utf-8 > > import traceback > try: > raise Exception(u'Зрегиться') > except Exception,e: > print traceback.format_exc().decode('utf-8').encode('cp437', 'replace') > > > Getting > > beryl:~ oleg$ python ./wish/newaccount/reg.py > Traceback (most recent call last): > File "./wish/newaccount/reg.py", line 5, in <module> > raise Exception(u'?????????') > Exception: <unprintable Exception object> > > > > My console settings: > > In [1]: import sys > > In [2]: sys.getdefaultencoding() > Out[2]: 'ascii' > > In [3]: sys.stdout.encoding > Out[3]: 'US-ASCII' > > > On Thu, Jul 17, 2008 at 9:30 AM, Oleg Oltar <[EMAIL PROTECTED]> wrote: > >> OK >> the output: >> >> # coding: utf-8 >>> >>> import traceback >>> try: >>> raise Exception(u'Зрегиться') >>> except Exception,e: >>> print traceback.format_exc().decode('utf-8') >>> >> >> >> >>> Traceback (most recent call last): >> File "/var/folders/PC/PCtFE4gQGiqpQymiAScfnk+++TM/-Tmp-/py46506ECT", >> line 7, in <module> >> print traceback.format_exc().decode('utf-8') >> UnicodeEncodeError: 'ascii' codec can't encode characters in position >> 148-156: ordinal not in range(128) >> >> >> >> >> On Thu, Jul 17, 2008 at 8:13 AM, Mark Tolonen <[EMAIL PROTECTED]<[EMAIL >> PROTECTED]>> >> wrote: >> >>> The Exception is output in the encoding of the source file. If the >>> terminal you are displaying the exception on is in a different encoding, it >>> will be garbled. I'm not familiar with OS X's terminal. Try running python >>> and printing sys.stdout.encoding. >>> >>> Alternatively, wrap your code in a try/except handler and translate the >>> exception yourself. >>> >>> # coding: utf-8 >>> import traceback >>> try: >>> raise Exception(u'Зарегистрироваться') >>> except Exception,e: >>> print traceback.format_exc().decode('utf-8') >>> >>> The last line translates the utf-8 traceback into Unicode. Printing >>> Unicode will encode the output with the terminal's decoding. If there are >>> characters it can't display, you'll still get an error, though. You can be >>> more explicit however: >>> >>> print >>> traceback.format_exc().decode('utf-8').encode('cp437','replace') >>> >>> In this case you'll get ? whenever a character can't be represented in >>> the selected encoding. cp437, for example, can't display any russian >>> characters, so for me (on Windows) I just get all ???????????. When I tried >>> it with a character string that could be displayed in cp437, it worked fine: >>> >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> File "t4.py", line 4, in <module> >>> raise Exception('MàΓ£ΦΘΩδ') >>> Exception: MàΓ£ΦΘΩδ >>> >>> Another option is to redirect the output to a file and read the file with >>> an editor that can display utf-8 (such as Notepad on Windows). >>> >>> python testfile.py 2>error.txt # this redirects stderr to a >>> file. >>> >>> Hope that helps, >>> Mark >>> >>> "Oleg Oltar" <[EMAIL PROTECTED]> wrote in message >>> news:[EMAIL PROTECTED] >>> >>>> The code >>> >>> # -*- coding: utf-8 -*- >>> #!/usr/bin/python >>> >>> >>> """ >>> >>> This test case check how system works in the situation, when user tries >>> to use already >>> used username (domain) >>> >>> We are creating two accounts with such parameters: >>> 1. Sex = Femle >>> 2. Name1=Name2 = foobar%S >>> 3. Pass1 = Name >>> 4. Pass2 = Name >>> 5. Email address1 = Email address2 = [EMAIL PROTECTED] >>> >>> >>> In the test we use verification point - warning message about incorrect >>> input of domain name and the >>> sugestion message >>> >>> """ >>> >>> from selenium import selenium >>> import unittest, time, re >>> import HTMLTestRunner >>> import config >>> import Creating_account_basic >>> >>> >>> >>> >>> class Same_domain_name(unittest.TestCase): >>> >>> def setUp(self): >>> self.name = "foobar" >>> self.email = self.name + "@meta.ua" >>> self.verificationErrors = [] >>> self.selenium = selenium("localhost", 4444,config.browser, >>> config.link) >>> self.selenium.start() >>> >>> def test_create_account_to_check(self): >>> """Creating sample account for next test""" >>> sel = self.selenium >>> sel.open("/") >>> sel.click(u"link=Регистрация") >>> sel.wait_for_page_to_load("70000") >>> sel.click("id_gender_1") >>> sel.type("id_first_name", self.name) >>> sel.type("id_last_name", self.name) >>> sel.type("id_email", self.email) >>> sel.type("id_username", self.name) >>> >>> #sel.wait_for_condition(sel.is_element_present("check_username_block"), >>> 70000) >>> time.sleep(10) >>> print "!!!", sel.is_element_present("check_username_block") >>> sel.type("id_password", self.name) >>> print sel.get_text("check_username_block").decode('cp-1252') >>> sel.type("id_password2", self.name) >>> sel.click(u"//[EMAIL PROTECTED]'Зарегистрироваться']") >>> sel.wait_for_page_to_load("70000") >>> if config.debugMode is True: >>> time.sleep(5) >>> >>> >>> def tearDown(self): >>> self.selenium.stop() >>> print self.verificationErrors >>> self.assertEqual([], self.verificationErrors) >>> >>> if __name__ == "__main__": >>> >>> unittest.main() >>> #HTMLTestRunner.main() >>> >>> >>> >>> On Thu, Jul 17, 2008 at 6:47 AM, Oleg Oltar <[EMAIL PROTECTED]> >>> wrote: >>> >>>> In [1]: import sys >>>> >>>> In [2]: sys.getdefaultencoding() >>>> Out[2]: 'ascii' >>>> >>>> In [3]: sys.stdout.encoding >>>> Out[3]: 'US-ASCII' >>>> >>>> >>>> On Thu, Jul 17, 2008 at 6:29 AM, Oleg Oltar <[EMAIL PROTECTED]> >>>> wrote: >>>> >>>>> Seems need help there. Start getting >>>>> >>>>> Traceback (most recent call last): >>>>> File "./newaccount/Same_domain_name.py", line 56, in >>>>> test_create_account_to_check >>>>> print sel.get_text("check_username_block") >>>>> UnicodeEncodeError: 'ascii' codec can't encode characters in position >>>>> 0-4: ordinal not in range(128) >>>>> >>>>> >>>>> when trying to get the text of one of the elements. >>>>> >>>>> How to solve it? >>>>> >>>>> >>>>> On Thu, Jul 17, 2008 at 5:11 AM, Oleg Oltar <[EMAIL PROTECTED]> >>>>> wrote: >>>>> >>>>>> OK, >>>>>> >>>>>> I just run the program from terminal. OS: OS X, IDLE = Emacs:). >>>>>> >>>>>> Yep used the string "# -*- coding: utf-8 -*-" to setup encoding.... >>>>>> >>>>>> >>>>>> On Thu, Jul 17, 2008 at 4:14 AM, Kent Johnson <[EMAIL PROTECTED]> wrote: >>>>>> >>>>>>> Another possibility - do you have a coding declaration in your source >>>>>>> file, something like >>>>>>> # -*- coding: <encoding name> -*- >>>>>>> >>>>>>> If so, does the coding declaration match the actual encoding of the >>>>>>> file? >>>>>>> >>>>>>> Kent >>>>>>> >>>>>>> On Wed, Jul 16, 2008 at 5:11 PM, Kent Johnson <[EMAIL PROTECTED]> >>>>>>> wrote: >>>>>>> > On Wed, Jul 16, 2008 at 2:40 PM, Oleg Oltar <[EMAIL PROTECTED]> >>>>>>> wrote: >>>>>>> >> Hi I am using unittest framework with selenium. >>>>>>> >> >>>>>>> >> When I tried this code (my verification point) >>>>>>> >> >>>>>>> >> self.assertEqual(True, sel.is_text_present(u"Извените >>>>>>> пароли не >>>>>>> >> совпадают"), "System didn't give a correct warning about the >>>>>>> password >>>>>>> >> misstype") >>>>>>> >> >>>>>>> >>> Where u"Извените пароли не совпадают" is russian = "Sorry >>>>>>> passwords aren't >>>>>>> >>> equal", and sel.is_text_present - searches text string on the >>>>>>> page >>>>>>> >> >>>>>>> >> The output I get in case of failure was: >>>>>>> >> >>>>>>> >> >>>>>>> >> Traceback (most recent call last): >>>>>>> >> >>>>>>> >> File "./newaccount/Password_matching.py", line 50, in >>>>>>> >> test_passwordMatching >>>>>>> >> self.assertEqual(True, sel.is_text_present(u"Извените >>>>>>> >> пароли не Ñ Ð¾Ð²Ð¿Ð°Ð´Ð°ÑŽÑ‚"), "System didn't give a >>>>>>> correct >>>>>>> >> warning about the password misstype") >>>>>>> >> >>>>>>> >> AssertionError: System didn't give a correct warning about the >>>>>>> password >>>>>>> >> misstype >>>>>>> >> >>>>>>> >> Is there any way to get normal russian text instead of these >>>>>>> strange D chars >>>>>>> >> "Изве...." >>>>>>> > >>>>>>> > I don't have the solution but maybe I can give you a useful clue. >>>>>>> The >>>>>>> > D characters are most likely the utf-8 encoding of the Russian >>>>>>> text, >>>>>>> > when displayed as if it is latin-1. So something in the system is >>>>>>> > converting the text to utf-8 and your console probably has latin-1 >>>>>>> or >>>>>>> > cp1252 encoding. >>>>>>> > >>>>>>> > Some details might help - how are you running the program - >>>>>>> console, >>>>>>> > IDLE...? What OS? What are the values of sys.getdefaultencoding() >>>>>>> and >>>>>>> > sys.stdout.encoding? >>>>>>> > >>>>>>> > Kent >>>>>>> > >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>> ------------------------------ >>> >>> _______________________________________________ >>> Tutor maillist - Tutor@python.org >>> http://mail.python.org/mailman/listinfo/tutor >>> >>> >>> _______________________________________________ >>> Tutor maillist - Tutor@python.org >>> http://mail.python.org/mailman/listinfo/tutor >>> >>> >> >
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor