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

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 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)