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

Selenium Python中send_keys触发回车失效,输入数字问题求助

问题分析与解决方案

核心问题

你遇到的send_keys无法触发按键、反而输入数字的情况,是因为错误导入了curses库的KEY_ENTER常量。curses.KEY_ENTER是终端界面的按键编码,对应整数323,所以调用send_keys(KEY_ENTER)时实际是输入了数字323,而非触发回车键。

修复步骤

1. 替换按键常量导入

删除原代码中的:

from curses import KEY_ENTER

替换为Selenium官方提供的按键类:

from selenium.webdriver.common.keys import Keys

2. 修改回车触发代码

将:

search.send_keys(KEY_ENTER)

改为:

search.send_keys(Keys.ENTER)
# 部分场景下用RETURN更可靠,可替换为:
# search.send_keys(Keys.RETURN)

3. 修正其他潜在问题

  • 代码中driver.get("url")是硬编码字符串,应使用变量url:
    driver.get(url)
    
  • 断言部分的XPATH//input[@placeholder='pytest.order']存在错误,pytest.order是变量而非占位符字符串,同时输入框的文本需用get_attribute("value")获取而非.text,修正后示例:
    sale_element = driver.find_element(By.CLASS_NAME, "o_searchview_input")
    assert sale_element.get_attribute("value") == pytest.order
    

完整修正后的代码片段

import pytest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys  # 新增正确导入

class TestFunc:
    
    order =""
    def test_validate_offer(self):
        username = "******"
        password = "*****"
        url = "http://*****"
        svc = Service("C:\\bin\\geckodriver.exe")
        driver = webdriver.Firefox(service=svc)
        pytest.order='3446'
        driver.implicitly_wait(15)
        driver.get(url)  # 修正为变量url
        driver.find_element(By.ID,"login").send_keys(username)
        driver.find_element(By.ID,"password").send_keys(password)
        driver.find_element(By.XPATH,"//button[@type='submit']").click()
        
        driver.find_element(By.XPATH,"//div[@class='mk_apps_sidebar_panel']//li[2]//a[1]").click()
        driver.find_element(By.XPATH,"//i[@title='Remove']").click()
        driver.find_element(By.XPATH,"//input[@placeholder='Search...']").send_keys(pytest.order)
        wait = WebDriverWait(driver,10)
        search=wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "o_searchview_input")))
        search.send_keys(Keys.ENTER)  # 修正为Keys.ENTER
        
        # 修正定位和文本获取方式
        sale_element = driver.find_element(By.CLASS_NAME, "o_searchview_input")
        sleep(5) 
        assert sale_element.get_attribute("value") == pytest.order
        
        driver.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:15:39