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

Django Channels测试中Selenium的Keys.ENTER无法触发问题求助

Django Channels Selenium测试中ENTER按键未触发的解决方法

关于USB错误日志

那个USB设备错误是ChromeDriver在Windows上的常见警告,和你的ENTER按键问题无关,无需理会。

解决ENTER按键未触发的可行方案

  • 直接定位输入框元素发送按键(推荐)
    ActionChains的全局send_keys依赖当前焦点元素,可能焦点未正确落在输入框上。改为直接定位输入框,调用元素自身的send_keys方法:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    
    def _post_message(self, message):
        # 替换为你的输入框定位方式(ID/CSS选择器等)
        input_box = self.driver.find_element(By.ID, "message-input")
        input_box.send_keys(message + Keys.ENTER)
    
  • 给ActionChains添加延迟
    有时候Selenium操作速度过快,前端事件未及时响应,添加短暂延迟模拟真实操作节奏:

    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.common.keys import Keys
    
    def _post_message(self, message):
        action = ActionChains(self.driver)
        action.send_keys(message)
        action.pause(0.3)  # 添加0.3秒延迟
        action.send_keys(Keys.ENTER)
        action.perform()
    
  • 用JavaScript触发回车事件
    如果上述方法都无效,直接通过JavaScript模拟键盘回车事件,绕过Selenium的模拟限制:

    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    
    def _post_message(self, message):
        input_box = self.driver.find_element(By.ID, "message-input")  # 替换选择器
        input_box.send_keys(message)
        # 模拟完整的回车按键事件
        self.driver.execute_script("""
            const element = arguments[0];
            // 触发keydown事件
            const keydownEvent = new KeyboardEvent('keydown', {
                key: 'Enter', keyCode: 13, which: 13, bubbles: true
            });
            element.dispatchEvent(keydownEvent);
            // 触发keyup事件
            const keyupEvent = new KeyboardEvent('keyup', {
                key: 'Enter', keyCode: 13, which: 13, bubbles: true
            });
            element.dispatchEvent(keyupEvent);
        """, input_box)
    
  • 检查前端事件绑定
    确认前端是否监听的是keydown/keyup/keypress事件,部分场景下可能只监听了特定事件(比如keydown),但手动操作正常的话这种概率较低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:31:03