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

Selenium Python脚本执行异常:YouTube搜索操作无响应

解决YouTube搜索栏无法输入的Selenium脚本问题

问题情况

脚本目标是打开YouTube网站,在搜索栏输入“hello”并回车,但实际运行仅能打开网站,无法执行输入和回车操作。用户已切换至Google.com测试、确认搜索栏元素ID无误,问题仍存在。

错误分析

  1. 元素定位语法错误:代码中driver.find_element(By.ID('search'))写法错误,By.ID是定位策略常量,正确用法是传入两个参数:By.ID和目标元素ID值,即driver.find_element(By.ID, 'search')。
  2. 硬编码等待不可靠:time.sleep()属于强制等待,无法保证元素实际已加载完成、可交互,可能导致元素还未就绪就执行操作。

修正后的脚本

#!/usr/bin/env python3

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

# 设置Chrome驱动
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

driver.get('https://youtube.com')

# 使用显式等待,等待元素加载(最长等待10秒)
wait = WebDriverWait(driver, 10)
# 处理YouTube的Cookie弹窗(如果存在)
try:
    accept_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='接受全部']")))
    accept_button.click()
except:
    pass  # 没有弹窗则跳过

# 等待搜索栏加载完成并可交互
search_bar = wait.until(EC.element_to_be_clickable((By.ID, 'search')))

words = ['hello']
for word in words:
    search_bar.clear()
    search_bar.send_keys(word)
    search_bar.send_keys(Keys.ENTER)
    # 等待搜索结果加载完成
    wait.until(EC.presence_of_element_located((By.ID, 'contents')))

driver.quit()

额外说明

  • 加入Cookie弹窗处理逻辑:YouTube首页通常会有Cookie授权弹窗,若未处理可能遮挡或干扰搜索栏交互。
  • 替换强制等待为显式等待:通过WebDriverWait等待元素处于可交互状态,相比time.sleep()更稳定,能适配不同网络加载速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:22:39