在python上使用Selenium Webdriver发送unicode

ana*_*nda 2 python unicode selenium webdriver

我正在使用Selenium Webdriver和python在网站上运行测试.

python 2.7.2与最新的Selenium

我无法弄清楚如何将德语"Umlaute"(öäüß)等unicode发送到输入表单.据我所知,webdriver可以处理unicode所以这可能是一个python问题.

# -*- 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)
Run Code Online (Sandbox Code Playgroud)

这没有错误,但不发送"ä".是否需要进一步的编码/解码...?

干杯

ana*_*nda 5

经过几个小时的尝试后我终于明白了=)看起来我的IDE(Komodo)导致了这个问题 - 在将首选项中的编码设置为latin-4之后,它以两种不同的方式很好地工作:

将字符串声明为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)
Run Code Online (Sandbox Code Playgroud)

解码latin-4并转换为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)
Run Code Online (Sandbox Code Playgroud)

感谢所有帮助过我的人!

干杯

  • (1)不要在bytestrings中使用非ascii字符(在Python 3中明确禁止).要么使用'u''` unicode文字,要么在顶部添加`from __future__ import unicode_literals`来创建Unicode字符串.(2)无关:使用单引号,以避免在Python源中转义双引号:`'[name ="q"]'`.(3)对你的Python源使用utf-8编码(相应地配置你的IDE /编辑器),除非你有充分的理由不这样做. (2认同)