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

如何在Selenium C#中向shadow-root下的textarea发送按键?代码失效求助

问题:JS自动发送聊天文本失败,触发回车键无效

我写了一段嵌在C#里的JavaScript代码,试图自动在聊天框发送指定文本,但完全没有效果,触发回车键的操作也不起作用。

我的代码:

string scriptToSendAndPressEnter = @"
let textarea = document.querySelector('#root > div > div > div.chatroom-module__chatroom__eVUaK > div.chatroomEditor-module__editor_area__1UsgR > textarea-ex').shadowRoot.querySelector('textarea');
textarea.focus();
textarea.value = 'this text i want to send';
textarea.dispatchEvent(new Event('input', { 'bubbles': true }));
var keyPressEvent = new KeyboardEvent('keypress', { bubbles: true, cancelable: true, keyCode: 13 });
textarea.dispatchEvent(keyPressEvent);
";
js.ExecuteScript(scriptToSendAndPressEnter);
Thread.Sleep(5000);

聊天框HTML结构截图:

聊天框HTML结构截图


解决建议:

  1. 修正代码结构错误
    你原本把C#的js.ExecuteScript()和Thread.Sleep()写到了JS字符串内容里,这部分属于C#代码,必须移出JS脚本范围,放在C#代码块中(如上面修正后的代码所示)。

  2. 替换废弃的键盘事件
    keypress事件已被浏览器废弃,改用keydown或keyup事件,同时避免使用已废弃的keyCode,改用标准的key属性指定回车键:

    // 替换原键盘事件代码
    var enterEvent = new KeyboardEvent('keydown', { 
        bubbles: true, 
        cancelable: true, 
        key: 'Enter' 
    });
    textarea.dispatchEvent(enterEvent);
    // 可选:再触发keyup事件,模拟完整按键流程
    textarea.dispatchEvent(new KeyboardEvent('keyup', { key: 'Enter', bubbles: true }));
    
  3. 验证Shadow DOM元素选择
    在浏览器控制台单独执行以下代码,确认能正确获取到textarea元素:

    document.querySelector('#root > div > div > div.chatroom-module__chatroom__eVUaK > div.chatroomEditor-module__editor_area__1UsgR > textarea-ex').shadowRoot.querySelector('textarea')
    

    如果返回null,说明选择器有误,需要重新定位元素。

  4. 补充触发必要事件
    部分前端框架会监听change事件,除了input事件,额外触发change事件确保文本内容被框架识别:

    textarea.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
    
  5. 尝试直接触发提交按钮(更可靠)
    如果聊天界面有明确的发送按钮,直接找到按钮并触发点击事件,比模拟回车更稳定:

    // 替换为实际发送按钮的选择器
    let sendBtn = document.querySelector('.chatroomEditor-module__send_btn__xxx');
    if (sendBtn) sendBtn.click();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:37:19