如何处理硒中的奇怪字符? 'utf8'编解码器无法解码位置0的字节0xc3:

时间:2015-10-02 15:22:46

标签: python python-2.7 selenium unicode encoding

我试图在selenium中发送带有西班牙语重音的键,我正在做的是通过带有各种声明的数组发送字符串,这里是它被卡住的行。

["Electrodomésticos", "Otros electrodomésticos", ["sensorhumo.jpg"], "Sensor de humo inalámbrico independiente.", "-Frecuencia: 433Mhz. -Codigo de trabajo: 2262. -Alacance inalámbrico: 80 mts con línea de vista. ", "59000", "x", "x", "x", "x", "x", "x"],

当我发送这部分时:

“ - Frecuencia:433Mhz。-Codigo de trabajo:2262。-Alacanceinalámbrico:80 mtsconííadevaista。”

到此代码:

    descripcion=".//*[@id='field-description']"
    descripciontext=str(array3[i][x])
    x=x+1
    descripcionelement = wait.until(lambda driver: driver.find_element_by_xpath(descripcion))
    descripcionelement.send_keys(descripciontext) 

它抛出了这条消息:

  

UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0xc3:   意外的数据结束

只有在我删除此部分的重音并且我尝试使用解码时它才有效。

2 个答案:

答案 0 :(得分:2)

当我尝试在表单内的选择选项中发送类似'España'的内容时,我自己偶然发现了这个错误。

接受的答案是正确的,最好的方法是以unicode发送值。

我将在这里留下一个简短的代码,以透明的方式转换发送的值(str或unicode)

x

答案 1 :(得分:1)

要在selenium-sendkeys中处理unicode,需要进行unicode转换,将字节转换为unicode使用其中一种方式 -

  

descripciontext =“ - 弗朗肯西亚:433Mhz。-Codigo de trabajo:2262。   -Alacanceinalámbrico:80 mtsconííadevaista。“

PRINT

或者

Unicode (by manual):     descripciontext = u"-Frecuencia: 433Mhz. -Codigo de trabajo: 2262. -Alacance inalámbrico: 80 mts con línea de vista."

现在使用send_keys

Unicode (by automatic decoding):     descripciontext = unicode(descripciontext.decode("iso-8859-4"))