selenium使用send_keys()方法寫中文報錯的解決方法

在使用selenium時候,難免會遇到需要處理中文的情況。畢竟咱們是在中國,做的產品大都也是和中文有強烈聯繫的。

舉例:打開好搜。搜索“靈魂擺渡”,找到類名爲:‘g-mohe ’的類。然後退出。

代碼如下:


driver = webdriver.Chrome()

driver.maximize_window()
driver.get("http://www.haosou.com")
q = '靈魂擺渡'
driver.find_element_by_name("q").send_keys(q)
driver.find_element_by_name("q").submit()
driver.find_element_by_class_name('g-mohe ')      
driver.quit()


代碼看起來是沒問題的,但是執行之後會報錯:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe7 in position 0: unexpected end of data

這是什麼意思?在python2.7+selenium中,使用utf-8編碼的中文作爲參數調用send_keys()方法。

utf8編碼不能按照我們預期的填入對應的搜索框內。怎麼辦呢?

在這裏,我們可以使用解碼的方式,把utf8編碼變爲unicode。得到解決。

具體步驟:

把代碼中的driver.find_element_by_name("q").send_keys(q)

修改爲:driver.find_element_by_name("q").send_keys(q.decode())

或者你喜歡寫成:dirver.find_element_by_name("q").send_keys(u'靈魂擺渡')

也是可以的。你開心就好。


順帶一提decode方法,默認的參數就是'utf8'。所以如果你的中文字符串使用的本來就是utf8編碼。那麼就不用添加參數。

如果你的中文字符串是GBK編碼的,記得在使用decode方法時,寫爲:decode('GBK')


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章