weixin_45115418 2021-03-24 09:51 采纳率: 80%
浏览 110
已结题

selenium自动化测试输入中文报错

程序目标是打开百度并搜索相关信息,代码如下:

from selenium import webdriver


browser = webdriver.Firefox()
browser.get('https://www.baidu.com/')
browser.find_element_by_id('kw').send_keys('哈哈哈哈')

结果报错:

Traceback (most recent call last):
  File "D:/python_work/web自动化/测试.py", line 5, in <module>
    browser.find_element_by_id('kw').send_keys('哈哈哈哈')
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webelement.py", line 477, in send_keys
    self._execute(Command.SEND_KEYS_TO_ELEMENT,
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 319, in execute
    response = self.command_executor.execute(driver_command, params)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 374, in execute
    return self._request(command_info[0], url, body=data)
  File "D:\python\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 397, in _request
    resp = self._conn.request(method, url, body=body, headers=headers)
  File "D:\python\lib\site-packages\urllib3\request.py", line 79, in request
    return self.request_encode_body(
  File "D:\python\lib\site-packages\urllib3\request.py", line 171, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
  File "D:\python\lib\site-packages\urllib3\poolmanager.py", line 336, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "D:\python\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
    httplib_response = self._make_request(
  File "D:\python\lib\site-packages\urllib3\connectionpool.py", line 392, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "D:\python\lib\http\client.py", line 1230, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "D:\python\lib\http\client.py", line 1275, in _send_request
    body = _encode(body, 'body')
  File "D:\python\lib\http\client.py", line 160, in _encode
    raise UnicodeEncodeError(
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 10-13: Body ('哈哈哈哈') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.

后来把send_keys()内容改成非中文的就可以正常运行;

也试过send_keys(u'哈哈哈哈'),结果报同样的错,而且我发现我只要有中文就报这种错:

browser.find_element_by_link_text('百度一下').click()

百度了一大圈也没找到个解决方案,然后我把同样的程序拿到同事的电脑上面就可以正常运行,我只记得我的pycharm改过一个配置文件的值,但是不记得改得啥了 我试过重装pycharm依然没法解决,求助!!!!

  • 写回答

4条回答 默认 最新

  • weixin_45115418 2021-03-24 15:03
    关注

    总算找到原因了 找到python安装路径的这个文件__init__.py 我的路径是D:\python\Lib\json

    打开这个py文件,找到def dumps()方法,将

    ensure_ascii=False改为ensure_ascii=True,保存后重启 完美解决
    
    回想了一下 之前是学json数据格式处理的时候由于中文转码的问题,将这个值改成了Fslse。。。。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日

悬赏问题

  • ¥15 关于#极限编程#的问题,请各位专家解答!
  • ¥20 win11账户锁定时间设为0无法登录
  • ¥45 C#学生成绩管理系统
  • ¥15 VB.NET2022如何生成发布成exe文件
  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!