You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium调用send_keys向聊天框输入多行文本异常如何解决

问题根因

你遇到的异常由两个问题共同导致:

  1. 代码存在语法错误:多行字符串结尾多写了1个双引号,Python三引号语法仅需要连续3个双引号即可完成字符串闭合。
  2. 绝大多数网页聊天输入框默认绑定了Enter键触发消息发送的交互逻辑,send_keys方法传入的原生换行符会被直接识别为Enter键按下事件,输入完第一行Hi,后碰到换行符就会立刻触发发送动作,后续的It's me就会残留在输入框内不会被发出。
可行替代方案
  • 方案1:将原生换行替换为Shift+Enter组合键(最通用)
    几乎所有聊天产品都支持Shift+Enter实现输入框内软换行、不触发发送,只需要把多行文本里的普通换行替换成对应按键组合即可,Selenium环境下的示例代码:

    from selenium.webdriver.common.keys import Keys
    
    target_text = "Hi,\nIt's me"
    # 替换普通换行为Shift+Enter软换行
    input_content = target_text.replace("\n", Keys.SHIFT + Keys.ENTER)
    element.send_keys(input_content)
    # 内容全部输入完成后,可按需按Enter或者点击发送按钮完成发送
    
  • 方案2:通过JS直接修改输入框DOM值注入文本(效率最高)
    这种方式不会触发原生按键事件,也就不会意外触发发送逻辑,文本注入完成后再手动触发发送动作即可:

    target_text = """Hi,
    It's me"""
    # 执行JS直接给输入框赋值
    driver.execute_script("arguments[0].value = arguments[1];", element, target_text)
    # 后续执行点击发送按钮的逻辑即可
    
  • 方案3:逐行输入+行间插入软换行(兼容性兜底)
    如果前两种方案在个别站点存在适配问题,可以拆分文本逐行输入,除最后一行外,每输完一行就插入一次Shift+Enter软换行:

    from selenium.webdriver.common.keys import Keys
    
    text_lines = ["Hi,", "It's me"]
    for idx, line in enumerate(text_lines):
        element.send_keys(line)
        # 非最后一行时输入软换行
        if idx != len(text_lines) - 1:
            element.send_keys(Keys.SHIFT, Keys.ENTER)
    

内容的提问来源于stack exchange,提问作者fadliarz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:54:43