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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)