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

使用Selenium WebDriver进行Python Web自动化:Youtube闪退问题求助

Selenium操作Youtube页面直接关闭的解决办法

一、页面直接关闭的核心原因及解决办法

  • 版本不兼容问题:Chrome浏览器与chromedriver版本必须严格匹配,手动下载驱动极易出现版本错位。推荐用webdriver-manager自动管理驱动,无需手动查找适配版本:
    先安装依赖:pip install webdriver-manager
    代码中替换驱动初始化逻辑:
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    
  • 元素定位过早触发报错退出:页面未完全加载就执行元素查找,会抛出NoSuchElementException,程序终止后浏览器自动关闭。改用显式等待替代time.sleep,确保元素加载完成再操作:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 最长等待10秒,直到搜索框出现
    searchbox = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//*[@id="search"]'))
    )
    searchbox.send_keys("Google")
    
    # 等待搜索按钮可点击
    searchbutton = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "search-icon-legacy"))
    )
    searchbutton.click()
    
    另外,你原代码中的按钮XPATH过于冗长,用ID定位更稳定可靠。

二、chromedriver能否放到Selenium文件中?

可以。找到Python的site-packages目录下的selenium/webdriver/chrome/文件夹,将对应系统的chromedriver(Windows为.exe,Linux/Mac为无后缀文件)放入即可。但这种方法需要在Chrome浏览器更新后手动替换驱动,远不如webdriver-manager自动维护方便。

修正后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

url = 'https://youtube.com'
# 自动安装匹配版本的chromedriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)

# 显式等待搜索框加载完成
searchbox = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="search"]'))
)
searchbox.send_keys("Google")

# 显式等待搜索按钮并点击
searchbutton = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "search-icon-legacy"))
)
searchbutton.click()

time.sleep(5)  # 可根据需求调整等待时长
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:02:20