ananda
ananda

Reputation: 101

Sending unicode with Selenium Webdriver on python

I'm using Selenium Webdriver with python for running tests on a website.

python 2.7.2 with latest Selenium

I can't figure out how to send unicode such as German "Umlaute" (öäüß) to an input form. As far as I know webdriver can handle unicode so this might be a python problem.

# -*- coding: iso-8859-1 -*-

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.google.de")
i = u"hälp me"
driver.find_element_by_css_selector("INPUT[name=\"q\"]").send_keys(i)

This works without errors but does not send the "ä". Is there any further encoding/decoding required...?

Cheers

Upvotes: 5

Views: 14239

Answers (1)

ananda
ananda

Reputation: 101

After some hours of trying I finally got it =) Looks like my IDE (Komodo) caused the problem - after setting the encoding in preferences to latin-4 it works nicely in two different ways:

Declare string as unicode:

# -*- coding: iso-8859-4 -*-

from selenium import webdriver
from sys import version_info

driver = webdriver.Firefox()

driver.get("http://www.google.de")

i = u"hälp me"
driver.find_element_by_css_selector("INPUT[name=\"q\"]").send_keys(i)

Decode latin-4 and convert to unicode:

# -*- coding: iso-8859-4 -*-

from selenium import webdriver
from sys import version_info

driver = webdriver.Firefox()

driver.get("http://www.google.de")

i = "hälp me"
i = unicode(i.decode("iso-8859-4"))
driver.find_element_by_css_selector("INPUT[name=\"q\"]").send_keys(i)

Thanks to everybody who helped me!

Cheers

Upvotes: 5

Related Questions