2015-10-02 82 views
3

即時嘗試在selenium中發送帶有西班牙語重音符號的密鑰,我所做的是通過具有各種entrys的數組發送字符串,以下是它獲取信息的行。如何處理硒中的奇怪字符? 'utf8'編解碼器無法解碼位置0中的字節0xc3:

["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德特拉瓦霍:2262 -Alacanceinalámbrico:80 MTS CON拉利內阿德柳暗花明又一村」

這個代碼:

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' codec can't decode byte 0xc3 in position 0: unexpected end of data

它只適用於如果我從這部分刪除口音,我嘗試使用解碼。

+1

Unicode轉換併發送 - myunicode = U「-Frecuencia: 433Mhz。-Codigo de trabajo:2262. -Alacanceinalámbrico:80 mts conlíneade vista。「現在使用send_keys。 – SIslam

+0

你能舉個例子,我不明白你的評論。 – 2one2

+1

descripciontext = u「-Frecuencia:433Mhz。-Codigo de trabajo:2262. -Alacanceinalámbrico:80 mts conlíneade vista。」現在descripcionelement.send_keys(descripciontext) – SIslam

回答

1

爲了處理硒的SendKeys unicode的,需要統一鑄造,以字節轉換爲Unicode使用ways-

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

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

或者

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

現在使用send_keys

之一
descripcionelement.send_keys(descripciontext) 
+0

你不需要在'descripciontext.decode(「iso-8859-4」)周圍包裝'unicode()'''decode()'無論如何都會返回一個Unicode字符串 –

2

我已經stumbl當我嘗試在窗體內的選擇選項中發送類似'España'的東西時,我自己也會編輯此錯誤。

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

我會在這裏留下一個簡短易碼,也就是把這個被髮送的值,無論是海峽或Unicode,以透明的方式

def _convert(param): 
    if isinstance(param, str): 
     return param.decode('utf-8') 
    else: 
     return param 

# both examples will work 
parameter = 'España' 
driver_element.send_keys(_convert(parameter)) 

unicode_parameter = u'España' 
driver_element.send_keys(_convert(parameter)) 
相關問題