Selenium Python中如何使用JavaScript executor发送ENTER/RETURN回车键?
Selenium无提交按钮回车触发搜索解决方案
以下为按优先级排列的可落地解决方案:
方案1:优化原生send_keys调用(优先尝试)
send_keys失效大概率是未激活输入框焦点、或元素未完全加载导致,正确写法如下:
- 先导入Selenium的按键类:
from selenium.webdriver.common.keys import Keys - 加入显式等待确保元素可交互后再操作:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 最多等待10秒直到搜索输入框可点击 search_input = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CLASS_NAME, "tau-search__input")) ) # 点击激活输入框焦点 search_input.click() # 清空原有占位内容(可按需跳过) search_input.clear() # 输入搜索词后发送回车 search_input.send_keys("你的搜索关键词") search_input.send_keys(Keys.ENTER)
方案2:JS赋值后触发回车事件
如果要沿用之前的JS赋值逻辑,可直接通过JS模拟标准回车事件,用arguments传参避免搜索词含特殊字符时报错:
search_word = "你的搜索关键词" driver.execute_script(""" const input = document.getElementsByClassName('tau-search__input')[0]; // 写入搜索值 input.value = arguments[0]; // 构造回车事件 const enterEvent = new KeyboardEvent('keydown', { key: 'Enter', code: 'Enter', which: 13, keyCode: 13, bubbles: true }); // 给输入框触发回车事件 input.dispatchEvent(enterEvent); """, search_word)
方案3:优化ActionChains调用
之前ActionChains失效大概率是没有先聚焦到输入框,正确写法如下:
from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys search_input = driver.find_element(By.CLASS_NAME, "tau-search__input") ActionChains(driver)\ .move_to_element(search_input)\ .click()\ .send_keys("你的搜索关键词")\ .send_keys(Keys.ENTER)\ .perform()
补充排查点
如果以上方案均不生效,可先检查输入框是否有readonly等限制输入的属性,先执行移除属性操作后再重复上述步骤即可:driver.execute_script("arguments[0].removeAttribute('readonly')", search_input)
内容的提问来源于stack exchange,提问作者Prince_P
相关产品推荐
相关产品推荐

