簡體   English   中英

如何在python的splinter中編碼字符?

[英]How to encode characters in python's splinter?

我使用splinter對網站進行功能測試。 只要我不輸入特殊字符(如德國Umlaute),測試就可以順利進行。

如何調整腳本以測試具有這些字符的條目?

這是我到目前為止嘗試過的:

# coding=utf-8

from splinter import Browser


URL = "http://www.example.com"
USER = raw_input("Username, please: ") # f.e. "Günther"

with Browser('') as browser:
    # Log in as administrator
    browser.visit(URL)
browser.fill('user', USER)

這是我得到的錯誤日志:

Traceback (most recent call last):
  File "test.py", line 47, in <module>
    browser.fill('user', USER)
  File "C:\Python27\lib\site-packages\splinter\driver\webdriver\__init__.py", line 230, in fill
    field.value = value
  File "C:\Python27\lib\site-packages\splinter\driver\webdriver\__init__.py", line 338, in _set_value
    self._element.send_keys(value)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 293, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing})
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 370, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 164, in execute
    response = self.command_executor.execute(driver_command, params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 344, in execute
    data = utils.dump_json(params)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\utils.py", line 30, in dump_json
    return json.dumps(json_struct)
  File "C:\Python27\lib\json\__init__.py", line 243, in dumps
    return _default_encoder.encode(obj)
  File "C:\Python27\lib\json\encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x81 in position 0: invalid start byte

USER指定為unicode對象:

USER = u"Günther"
       ^

如果字符串來自外部源,請對其進行解碼:

USER = USER.decode('<ENCODING-OF-THE-STRING>')

Unidecode是我遇到的最簡單的unicode處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM