Как использовать unicode в строке xpath? (UnicodeEncodeError)

Я использую xpath в Селене RC с помощью API Python.

Я должен нажать элемент, кто текст, "Отправляют»"

Вот ошибка, которую я получаю:

In [18]: sel.click(u"xpath=//a[text()='Submit \xbb')]")
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)

/Users/me/<ipython console> in <module>()

/Users/me/selenium.py in click(self, locator)
    282         'locator' is an element locator
    283         """
--> 284         self.do_command("click", [locator,])
    285 
    286 

/Users/me/selenium.py in do_command(self, verb, args)
    201         body = u'cmd=' + urllib.quote_plus(unicode(verb).encode('utf-8'))
    202         for i in range(len(args)):
--> 203             body += '&' + unicode(i+1) + '=' + urllib.quote_plus(unicode(args[i]).encode('utf-8'))
    204         if (None != self.sessionId):
    205             body += "&sessionId=" + unicode(self.sessionId)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 28: ordinal not in range(128)
10
задан GJ. 12 June 2010 в 22:17
поделиться

3 ответа

 sel.click (u "xpath = // a [text () = 'Submit \ xbb')]")

Можно писать выражения XPath, содержащие любые символы Unicode .

Например:

// a [text () = 'Submit »')]

3
ответ дан 4 December 2019 в 04:01
поделиться

Ожидает ли sel_click () строки Unicode или строки utf-8 (байтовые)? Ужасная ошибка UnicodeEncodeError обычно возникает, когда вы пытаетесь передать первую, когда ожидается последняя (или какая-либо другая кодировка).

Я не могу попробовать прямо сейчас, но вы можете попробовать

"xpath=//a[text()='Submit \xc2\xbb')]"

вместо аргумента (который вы получите, используя .encode ('utf-8') ).

0
ответ дан 4 December 2019 в 04:01
поделиться

Я думаю, вам просто нужно изменить

sel.click(u"xpath=//a[text()='Submit \xbb')]")

на

sel.click(u"xpath=//a[text()='Submit \xbb')]".encode('utf8'))

Это потому, что ошибка указывает на то, что Selenium пытается закодировать объект Unicode в байтовую строку (используя кодек по умолчанию для Python, то есть 'ascii'), и именно это приводит к неудаче; Если сначала явно закодировать его самостоятельно, используя предположительно правильный кодек ('utf8', кодировка по умолчанию в XML), то можно избежать этой проблемы.

1
ответ дан 4 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: