How to use unicode inside an xpath string? (UnicodeEncodeError)

GJ. picture GJ. · Jun 12, 2010 · Viewed 8.7k times · Source

I'm using xpath in Selenium RC via the Python api.

I need to click an a element who's text is "Submit »"

Here's the error that I'm getting:

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)

Answer

Dimitre Novatchev picture Dimitre Novatchev · Jun 13, 2010
sel.click(u"xpath=//a[text()='Submit \xbb')]")

It is possible to write XPath expressions that contain any Unicode characters.

For example:

//a[text()='Submit &#xBB;')]