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

如何用Selenium Python实现YouTube搜索?搜索按钮点击失效排查

问题分析与解决方案

问题原因

  1. 代码拼写错误:代码中channel = driver.find_elelment_by_xpath('//*[@id="title"]')存在拼写错误,find_elelment多了一个字母l,应为find_element,这会直接抛出异常中断执行。
  2. 错误的搜索触发方式:搜索按钮是按钮元素,使用send_keys(Keys.ENTER)无法触发点击逻辑,应该调用click()方法;或者更简单的方式是直接在搜索输入框中按下回车,无需定位搜索按钮。
  3. 不可靠的固定等待:使用sleep(.3)这类固定时长等待,无法适配不同网络和页面加载速度,容易导致元素未就绪就执行操作。
  4. Geckodriver版本不兼容:Firefox 65需要搭配Geckodriver 0.23.0及以上版本,而代码中指定的geckodriver_0.18版本过低,会导致交互异常。

修复后的代码

#!/depot/Python-3.6.2/bin/python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import sys
import subprocess

options = Options()
options.headless = True
sys.tracebacklimit = 0
options.binary = "/global/freeware/Linux/2.X/firefox-65.0/firefox"

# 修正Geckodriver路径,使用适配Firefox 65的版本(0.23.0+)
gckd_path = "/fs/src/interfaces/cosmos/REGRESSION_PYTHON/Packages/geckodriver"  # 确保此路径是兼容版本

arg1 = sys.argv[1]
driver = webdriver.Firefox(options=options, executable_path=gckd_path)
url = "https://www.youtube.com/"
print(url)
driver.get(url)

# 显式等待搜索框可交互
search_box = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.NAME, "search_query"))
)
search_box.click()
search_box.send_keys(arg1)
print(search_box.get_attribute("value"))

# 直接在搜索框按回车触发搜索,无需定位按钮
search_box.send_keys(Keys.ENTER)

# 显式等待搜索结果加载完成
WebDriverWait(driver, 10).until(
    EC.url_contains("search_query")
)

print(driver.current_url)

# 修正拼写错误,定位第一个视频标题
try:
    first_title = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.XPATH, '//*[@id="title"]/h3/a'))
    )
    print(first_title.text)
except Exception as e:
    print("无法定位标题元素:", str(e))

print(driver.current_url)
driver.quit()

关键优化点

  • 使用显式等待替代固定sleep,确保元素就绪后再执行操作,提升稳定性。
  • 直接在搜索框按下回车触发搜索,避免定位搜索按钮可能出现的交互问题。
  • 修正代码拼写错误,避免异常中断。
  • 确保Geckodriver版本与Firefox 65兼容,替换为0.23.0及以上版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:36:12