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

如何在Selenium WebDriver中触发下拉搜索框的回车键操作

WebDriver爬虫:输入内容后触发回车键的解决方案

问题背景

编写基于WebDriver的Python爬虫时,已完成以下操作:打开浏览器、点击带搜索框的下拉列表、清空输入框并输入指定内容(emissor_item),但尝试多种方法均无法通过回车键触发查询。现有核心代码片段如下:

if any(item in all_drop_down_lists for item in to_select):
    
    for emissor_item in to_select:

        # 定位下拉列表按钮并点击
        xpath = '//*[@id="b8-ArtigoDropDown4"]'
        clickableElement = BO.find_element(By.XPATH,xpath)
        clickableElement.click()
        
        # 定位搜索输入框
        search_input = BO.find_element(By.XPATH, '//*[@id="b8-ArtigoDropDown4"]/div/div[2]/div[1]/input')
        # 清空并输入内容
        search_input.clear()
        search_input.send_keys(emissor_item)
        
        # 此处需要触发回车键
        time.sleep(1)

可行解决方案

方案1:直接发送Keys.ENTER

利用WebDriver的send_keys方法传入Keys.ENTER,模拟回车操作,确保输入框处于激活状态:

from selenium.webdriver.common.keys import Keys

# 输入内容后添加以下代码
search_input.send_keys(Keys.ENTER)

方案2:尝试Keys.RETURN替代

部分页面对RETURN键的响应更稳定,可替换尝试:

search_input.send_keys(Keys.RETURN)

方案3:显式等待后触发回车

避免隐式等待的不可靠性,先等待输入框处于可交互状态,再发送回车:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

# 输入内容后添加
WebDriverWait(BO, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//*[@id="b8-ArtigoDropDown4"]/div/div[2]/div[1]/input'))
)
search_input.send_keys(Keys.ENTER)

方案4:JavaScript模拟回车事件

如果前三种方法无效,直接通过JavaScript触发键盘事件:

# 输入内容后执行JS代码
BO.execute_script("""
const input = arguments[0];
const enterEvent = new KeyboardEvent('keydown', {
    key: 'Enter',
    code: 'Enter',
    keyCode: 13,
    bubbles: true,
    cancelable: true
});
input.dispatchEvent(enterEvent);
""", search_input)

额外优化建议

  • 替换time.sleep(1)为显式等待,等待查询结果加载完成(需替换为实际结果元素的定位器):
WebDriverWait(BO, 15).until(
    EC.presence_of_element_located((By.XPATH, "//*[@id='your-result-element-id']"))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:30:14