Selenium中searchbox.send_keys()无法自动在YouTube搜索栏输入文本
解决YouTube搜索框无法输入内容的问题
问题原因
- 元素定位错误:你定位的
//*[@id="search"]是搜索框的外层容器,并非实际接收输入的<input>标签,实际输入框是该容器内的子元素,name属性为search_query。 - 未等待元素就绪:页面加载过程中直接操作元素,可能元素还未完成渲染,处于不可交互状态。
修正后的代码
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Firefox() driver.get('https://youtube.com') # 显式等待输入框可交互,最多等待10秒 searchbox = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.NAME, "search_query")) ) searchbox.send_keys("Akram Khan") # 同样等待搜索按钮可交互后点击 searchButton = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "search-icon-legacy")) ) searchButton.click()
额外说明
- 显式等待能确保元素处于可操作状态后再执行动作,避免因页面加载延迟导致的操作失败。
- 用
name="search_query"定位输入框比依赖ID更稳定,YouTube页面结构偶尔会有小调整,但该name属性长期保持不变。
内容的提问来源于stack exchange,提问作者aktensorjak
相关产品推荐
相关产品推荐

